lunes, 23 de septiembre de 2013

Desarrollo Android.- Conectar Aplicación con MySQL

Sé que somos muchos los que actualmente desarrollamos aplicaciones para Android, por eso hoy os traigo el código que he utilizado para conectar mi aplicación con una Base de Datos MySQL de forma remota a través del protocolo HTTP:

MainActivity.java
public class MainActivity extends Activity {

    Button buttonEntrar;
    TextView textResult;
    EditText et;
 
    HttpPost httppost;
    StringBuffer buffer;
    HttpResponse response;
    HttpClient httpclient;
    List<NameValuePair> nameValuePairs;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  et = (EditText) findViewById(R.id.editText_user);
  buttonEntrar = (Button) findViewById(R.id.button_send);
  textResult = (TextView) findViewById(R.id.textView_result);
  buttonEntrar.setOnClickListener(new View.OnClickListener() 
     {
       public void onClick(View v) 
       {
        final ProgressDialog p = new ProgressDialog(v.getContext()).show(v.getContext(),"Waiting for Server", "Accessing Server");
              Thread thread = new Thread()
              {
                  @Override
                  public void run() {
                        
                           try{
                           httpclient=new DefaultHttpClient();
                           httppost= new HttpPost("http://pidb.no-ip.org/connection.php"); // make sure the url is correct.
                           //add your data
                           nameValuePairs = new ArrayList<NameValuePair>(1);
                           // Always use the same variable name for posting i.e the android side variable name and php side variable name should be similar,
                           nameValuePairs.add(new BasicNameValuePair("Edittext_value",et.getText().toString().trim()));  // $Edittext_value = $_POST['Edittext_value'];
                           httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                           //Execute <span id="IL_AD6" class="IL_AD">HTTP Post</span> Request
                           response=httpclient.execute(httppost);
                            
                           ResponseHandler<String> responseHandler = new BasicResponseHandler();
                           final String response = httpclient.execute(httppost, responseHandler);
                           System.out.println("Response : " + response);
                           runOnUiThread(new Runnable() {
                                  public void run() {
                                      p.dismiss();
                                       textResult.setText("Response from PHP : " + response);
                                  }
                              });
                           
                           }catch(Exception e){}
                  }
              };

              thread.start();
       }
     });   
  
 }

}

Esta Activity se conectará al servidor que aloja base de datos y se dirigirá al archivo connection.php pasándole con el método POST de http la sentencia SQL que se desee ejecutar en la variable a la que he llamado SENTENCIA, por php recogeré esa variable y en el lado del servidor se ejecutará dicha sentencia, realmente la aplicación no accede directamente a la Base de Datos, sino que es nuestro servidor Apache quien lo hará. Recordad que se puede pasar más de una variable por PHP separándolas con el símbolo &.

Probado y funcionando, para la próxima pondré como recoger variables POST con PHP. ¡Un saludo!

No hay comentarios:

Publicar un comentario