Connecting android app to Microsoft SQL server 2008
add these code
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Connecting android with MS SQL SERVER 2008
here are some similar questions asked (an answered):
- android MySQL connection
- How to connect to a MySQL Database from an Android App?
Even though those are for MySQL, it should work for MSSQL by changing the engine or the driver's use to connect. Usually, the approach is to expose some limited level of modification through a web service. Still, nothing is stopping you from directly accessing the database, albeit depending on the case, could pose a security risk.
Main Reasons the web service approach is taking:
- Performance
- Security
- Best Practice
- Separation of concerns
An exception is if you want to enable direct access because you're building a sort of database client through mobile.
How to connect android application to MSSQL server and retrive data from it?
At last found a quiet good guideline to solve my problem. It tells me details about implementing web services and how to connect MSSQL server with Android.
This is more than helpful and details are found on the correct answer .
What do I need to do is, first of all, have to create an web service using .NET(C#) and then connect my android application to that web service to retrieve data from the local machine [for me its my MSSQL Server 2008 R2]. Hope this helps others.
But after implementing the ideas and codes provided in those links; I came up with some changes,particularly in the approach.
This is what I have done in my MainActivity.
Hope, this helps others.
private static final String SOAP_ACTION = "http://tempuri.org/findContact";
private static final String OPERATION_NAME = "findContact";// your webservice web method name
private static final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
private static final String SOAP_ADDRESS = "http://10.0.2.2:58497/WebService/Service.asmx";
protected static final String TAG = null;
private static String fahren;
TextView tvData1;
EditText edata;
Button button;
String studentNo;
String state;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvData1 = (TextView)findViewById(R.id.textView1);
edata =(EditText)findViewById(R.id.editText1);
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
studentNo=edata.getText().toString();
new Submit().execute(studentNo);
}
});
}
private class Submit extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... arg) {
// TODO Auto-generated method stub
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);
PropertyInfo propertyInfo = new PropertyInfo();
propertyInfo.type = PropertyInfo.STRING_CLASS;
propertyInfo.name = "eid";
propertyInfo.setValue(studentNo);
request.addProperty(propertyInfo);//need to be careful adding this, as it became an issue for me while I was getting continuous exception.
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
httpTransport.debug = true;
try{
httpTransport.call(SOAP_ACTION, envelope);
Log.e("RequestDump", httpTransport.requestDump.toString());
Log.e("ResponseDump", httpTransport.responseDump.toString());
SoapObject result=(SoapObject)envelope.bodyIn;
if(result!= null){
state = result.getProperty(0).toString();
Log.e("Found", state);
}
else{
Log.e("Obj", result.toString());
}
}
catch (Exception exception) {
Log.e("Exception", exception.toString());
}
return state;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
tvData1.setText(result);
}
}
}
And of course, you cannot access webservice situated in your pc via wifi connection from your real device. [correct me if you know how to do it, please, provide correct url]. Here I ended up with emulator, and anyone can access live webservice from the real ip with their real device for sure, I have tested it already. This code works perfectly for me.
That's how I solved my problem.
Related Topics
Crashlytics Android Sdk - Custom Uncaughtexceptionhandler
How to Correctly Pass Unique Extras to a Pending Intent
Android Crash When App Is Closed and Reopened
App Completely Restarting When Launched by Icon Press in Launcher
Trying to Uninstall_Shortcut But Shortcut Won't Go Away
Failed to Connect to Camera Service
How to Get HTML Source Code from Url in Android
Android Studio 2.0 - Pause/White Screen on App First Run
Android: Rotate Image Without Loading It to Memory
How to Wrap Lengthy Text in a Spinner
Register to Be Default App for Custom File Type
How to Rename a File on Sdcard with Android Application
Android Studio Build Fails with "Task '' Not Found in Root Project 'Myproject'."
Android Gradle Build Error:(9, 0) Gradle Dsl Method Not Found: 'Compile()'
How to Give Everyone Access to Firestore Database, But Only via App
" App-Release.Apk" How to Change This Default Generated APK Name