miércoles, 14 de mayo de 2014

WebService. Conexión a base de datos Mysql desde Android. PARTE 4 (Borrar)

Buenas amigos, en temas anteriores estuvimos viendo como insertar registros a una base de datos Mysql (PARTE 1), como mostrar esos datos en nuestra app (PARTE 2) y como modificarlos (PARTE 3). Bien, como es obvio, en esta nueva parte veremos como borrar registros de nuestra base de datos.



Primeramente voy a crear un método en mi clase WebServiceExample para que conecte con el webservice asociado y le pase un parámetro, DNI, para que nos borre a nuestro usuario según su dni.


Bueno, si hemos seguidos todas las partes de este tutorial, esto tiene que estar dominado, varía muy poco entre unas cosas y otras.

  • Implementamos las clases con las que vamos a trabajar:
      • HttpClient httpclient=new DefaultHttpClient();
      • HttpPost httppost=new HttpPost("URL DE NUESTRO WEBSERVICE EN EL SERVIDOR")
        • Yo tengo puesto la ip local de mi pc, ya que si ponemos localhost o 127.0.0.1, el dispositivo va a buscar su propio localhost, el que va incluido en el móvil, y puede crear errores, lo mejor si estas probando, la ip local de tu pc. Si utilizas el emulador que trae el eclipse SDK android, tendrás que poner 10.0.0.2, ya que si no te dará fallo.
      • List nameValuePairs=new ArrayList(1);
        • En este caso le damos a nuestro ArrayList un tamaño (1) ya que son el número de variables con las que vamos a tratar, si quieres utilizar 3, pones 3, y así sucesivamente.
    • Ya tenemos nuestras clases preparadas, ahora vamos a almacenar los datos de nuestros EditText en nuestro ArrayList:
      • nameValuePairs.add(BasicNameValuePair("dni", dni.getText().toString().trim()));
        • Bien, esto no tiene mucha historia, almacenamos objetos de BasicNameValuePair con una variable y el valor que va a tener que le pasamos por constructor. Agregamos a nuestro ArrayList un objeto de este tipo según el tamaño que le hayamos dado.
    • Una vez almacenados los datos, le pasamos el ArrayList a nuestra clase HttpPost para que lo codifique:
      • httppost.setEntity(new UrlEncodeForEntity(nameValuePairs));
    • Bueno, una vez que lo tenemos codificado con la url del webservice y la información de nuestro ArrayList, hacemos que HttpClient lo envíe:
      • httpclient.execute(httppost);
    Ahora nos vamos a nuestro webservice para ver como trabaja:


    Cómo veis, el webservice también cambia poco con respecto a los anteriores:
    • Rellenamos las variables del localhost con la información de nuestro servidor:
      • Hostname: Nombre del host.
      • Database: Nombre de nuestra base de datos.
      • Username: Nombre de usuario del servidor.
      • Password: Contraseña del servidor.
    • Posteriormente, con los datos de servidor que hemos introducido, le pedimos que conecte al servidor y almacene la respuesta en otra variable:
      •  $localhost=mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
        • Si no puede conectar enviara un informe de error
      • or trigger_error(mysql_error(),E_USER_ERROR);
      • Una vez conectado al servidor, buscará nuestra base de datos y se conectará:
        • mysql_select_db($database_localhost, $localhost);
      • Posteriormente, y una vez encontrada la base de datos, obtendrá la variable que le pasamos por nuestra aplicación y las almacenará en otra variable que pueda manejar mejor.
        • $dni=$_POST['dni'];
      • Almacenada la variable, introduce el valor en un sentencia sql para realizar una consulta al servidor:
        • $query_search = "delete from personas where dni='".$dni."'";
      • Finalmente, y si todo ha ido bien, realizará la consulta a nuestro servidor, el cual, en caso de fallar la sentencia, nos enviará un informe de error.
        • $query_exec = mysql_query($query_search) or die(mysql_error());
        • Cerramos la conexión.
          • mysql_close($localhost);
        Ahora, y como ya deberías saber, vamos a crear una clase AsyncTask para que ejecute nuestra conexión en segundo plano:


        Bueno, en el método doInBackground creamos una condición if, en el cual introducimos como condición el método eliminar() si se los datos han sido eliminados, el método nos devuelve true y nos muestra un Toast con el éxito de la operación y limpiando nuestro formulario, todo esto debe correr en un hilo ya que si no bloquearía nuestro AsyncTask y nos funde a errores, si los datos no han podido ser borrados, el método eliminar() nos devolverá false, y nos mostrará un Toast corriendo en un hilo.

        Finalmente vamos a nuestro botón eliminar y le damos una acción:


        Bien, con esto ya podríamos eliminar los registros de nuestra base de datos.

        Continuaremos en la PARTE 5

        Aquí os dejo la clase, el archivo xml y el PHPWebServiceCodeExampleParte4

        Un saludo a todos.

        5 comentarios:

        1. una consulta si solo deseo saver si existe un usuario espesifico con su dni? como lo implementaria??

          ResponderEliminar
        2. porfavor como hago para verificar la existencia de un usuario

          ResponderEliminar