title: Connecting to MySQL database via Android SDK
body: <p>Can any one please tell me where to find a simple tutorial that shows how to make an Android application that connects to a external MySQL database, and report back some data?</p>
  
  <p>The tutorials I found on the Internet are not exact - they dont work or the code is not complete.</p>
  
  <pre><code>import java.io.IOException;
  import java.io.InputStream;
  import java.util.ArrayList;
  import java.util.List;
  import android.widget.Toast;
  import org.apache.http.HttpResponse;
  import org.apache.http.NameValuePair;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.HttpClient;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.client.methods.HttpRequestBase;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.message.BasicNameValuePair;
  import android.preference.PreferenceActivity;
  import android.preference.PreferenceManager;
  import android.app.Activity;
  import android.content.Intent;
  import android.content.SharedPreferences;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.widget.Button;
  import android.widget.CheckBox;
  import android.widget.EditText;
  import android.widget.TextView;
  
  public class main extends Activity {
      /** Called when the activity is first created. */
      Button login;
      String name = "", pass = "";
      EditText username, password;
      TextView tv;
      byte[] data;
      HttpPost httppost;
      StringBuffer buffer;
      HttpResponse response;
      HttpClient httpclient;
      InputStream inputStream;
      SharedPreferences app_preferences;
      List&lt;NameValuePair&gt; nameValuePairs;
      CheckBox check;
  
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
          username = (EditText) findViewById(R.id.username);
          password = (EditText) findViewById(R.id.password);
          login = (Button) findViewById(R.id.login);
          check = (CheckBox) findViewById(R.id.check);
  
          String Str_user = app_preferences.getString("username", "0");
          String Str_pass = app_preferences.getString("password", "0");
          String Str_check = app_preferences.getString("checked", "no");
          if (Str_check.equals("yes")) {
              username.setText(Str_user);
              password.setText(Str_pass);
              check.setChecked(true);
          }
  
          login.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
                  name = username.getText().toString();
                  pass = password.getText().toString();
                  String Str_check2 = app_preferences.getString("checked", "no");
                  if (Str_check2.equals("yes")) {
                      SharedPreferences.Editor editor = app_preferences.edit();
                      editor.putString("username", name);
                      editor.putString("password", pass);
                      editor.commit();
                  }
                  if (name.equals("") || pass.equals("")) {
                      Toast.makeText(main.this, "Blank Field..Please Enter",
                              Toast.LENGTH_LONG).show();
                  } else {
                      try {
                          httpclient = new DefaultHttpClient();
                          httppost = new HttpPost(
                                  "http://www.****.com/android/check.php");
  
                          // Add your data
                          nameValuePairs = new ArrayList&lt;NameValuePair&gt;(2);
                          nameValuePairs.add(new BasicNameValuePair("UserEmail",
                                  name.trim()));
                          nameValuePairs.add(new BasicNameValuePair("Password",
                                  pass.trim()));
                          httppost.setEntity(new UrlEncodedFormEntity(
                                  nameValuePairs));
  
                          // Execute HTTP Post Request
                          response = httpclient.execute(httppost);
                          inputStream = response.getEntity().getContent();
  
                          data = new byte[256];
  
                          buffer = new StringBuffer();
                          int len = 0;
                          while (-1 != (len = inputStream.read(data))) {
                              buffer.append(new String(data, 0, len));
                          }
  
                          inputStream.close();
                      } catch (Exception e) {
                          Toast.makeText(main.this, "error" + e.toString(),
                                  Toast.LENGTH_LONG).show();
                      }
  
                      if (buffer.charAt(0) == 'Y') {
                          Toast.makeText(main.this, "login successfull",
                                  Toast.LENGTH_LONG).show();
                      } else {
                          Toast.makeText(main.this,
                                  "Invalid Username or password",
                                  Toast.LENGTH_LONG).show();
                      }
                  }
              }
          });
          check.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
                  // Perform action on clicks, depending on whether it's now
                  // checked
                  SharedPreferences.Editor editor = app_preferences.edit();
                  if (((CheckBox) v).isChecked()) {
  
                      editor.putString("checked", "yes");
                      editor.commit();
                  } else {
                      editor.putString("checked", "no");
                      editor.commit();
                  }
              }
          });
      }
  
      public void Move_to_next() {
          // startActivity(new Intent(this, zzz.class));
      }
  }
  </code></pre>