Sie sind auf Seite 1von 8

INSERCCIN DE REGISTROS EN MYSQL CON ANDROID UTILIZANDO

CONEXIONES HTTP

Un Webservice suele ser un archivo PHP que recibe peticiones de nuestra app y
se las enva al servidor, posteriormente el servidor responde a nuestro webservice,
y este, a su vez, responde a nuestra app. En la imagen 1 se puede apreciar el
esquema de navegacin para consumir un servicio Web.

Fig 1. Esquema funcional Webservices

Un WebService no tiene porque ser un archivo PHP, tambin podramos realizar


en nuestro servidor un programa en java que escuche por socket nuestra app y
pasarle parmetros para que se comunique con el servidor, o podramos crear un
archivo Javascript, o cualquier otra aplicacin que nos sirva para comunicar
nuestra app con nuestro servidor.

Para crear la conexin a mysql necesitaremos:

Servidor con base de datos Mysql.

La base de datos esta compuesta por una tabla "personas" con los siguientes
campos:

DNI---Varchar
Nombre--Varchar
Telfono--Varchar
Email.Varchar

Uno o varios WebService (segn necesitemos). En este caso utilizaremos 1 que


se llama Insert.php.

Una conexin mediante la clase HttpClient de la API de Apache. No hay que


agregar libreras, esta API va incluida en el repositorio android.

Ejecutarlo todo mediante hilos AsyncTask. A partir de la versin 3 o superior


correrlo todo en AsyncTask es obligatorio.

1. La activity que debemos crear es la siguiente

La actividad contiene los siguientes elementos:

4 TextView y 4 Edittext, para los campos a rellenar.


2 Button para insertar y mostrar.
2 ImageButton para pasar de una persona a otra y se nos vaya mostrando.

Una vez tengamos nuestro diseo, nos vamos a nuestra clase.

Lo primero que debemos hacer es comunicar nuestra clase con el archivo xml y
sus componentes:
Antes de continuar vamos a ir a nuestro archivo AndroidManifest y vamos a
agregar permisos de INTERNET, muy importante.

Una vez hecho todo lo anterior vamos a crear un mtodo que enve la informacin
que introducimos en los campos a nuestro WebService para que este se lo
comunique al servidor y obtener una respuesta.
Inicialmente debemos invocar 2 clases y un ArrayList que cumplen con las
siguientes funciones:

HttpClient: Clase encargada de enviar la informacin almacenada en httpPost a


nuestro WebService.

HttpPost: almacena los datos que sern enviados, por medio de HttpClient, a
nuestro WebService.

List: Almacena objetos de tipo "NameValuePair" el cual almacena por constructor


(NameValuePair es una interfaz la cual implementa la clase
BasicNameValuePair ) una variable y el valor que contendr dicha variable, las
cuales son las que obtendr nuestro WebService.

Posteriormente debemos ejecutar las siguientes tareas:

Implementamos las clases con las que vamos a trabajar:


HttpClient httpclient=new DefaultHttpClient();
HttpPost httppost=new HttpPost("URL DE NUESTRO WEBSERVICE EN EL
SERVIDOR")

Se debe poner la ip local del equipo en el que se est ejecutando la aplicacin, ya


que si ponemos localhost o 127.0.0.1, el dispositivo va a buscar su propio
localhost, el que va incluido en el mvil, y puede crear errores.
List nameValuePairs=new ArrayList(4);

En este caso le damos a nuestro ArrayList un tamao (4) ya que son el nmero de
variables con las que vamos a tratar, si se van a utilizar 3, se ponen 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()));

Vamos a almacenar objetos de BasicNameValuePair con una variable y el valor


que le pasamos por constructor. Agregamos a nuestro ArrayList un objeto de este
tipo segn el tamao 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));

Una vez codificado con la url del webservice y la informacin de nuestro


ArrayList, hacemos que HttpClient lo enve:

httpclient.execute(httppost);

Ya hemos enviado nuestra informacin a nuestro WebService, vemoslo con lo


que le hemos enviado:

Veamos, este es nuestro WebService, un archivo escrito en PHP que interacta


con nuestro servidor, su funcionamiento sera de la siguiente manera:

Ingresamos las variables del localhost con la informacin de nuestro servidor:

Hostname: Nombre del host.


Database: Nombre de nuestra base de datos.
Username: Nombre de usuario del servidor.
Password: Contrasea 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 se encuentre la base de datos, obtendr las variables


que le pasamos por nuestra aplicacin y las almacenar en otras variables que
pueda manejar mejor.

$nombre=$_POST['nombre'];
$dni=$_POST['dni'];
$telefono=$_POST['telefono'];
$email=$_POST['email'];
Debemos tener en cuenta de que los nombres entre comillas simples se llaman
igual a las variables que les pasamos por nuestra app.

Almacenadas las variables, introduce los valores en una sentencia sql para
realizar una consulta al servidor:

$query_search = "insert into personas (nombre,dni,telefono,email) values


('".$nombre."','".$dni."','".$telefono."','".$email."')";

Finalmente, y si todo est bien, se 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 conexin.

mysql_close($localhost);
Ya tenemos implementado el cdigo java para conectarnos a nuestro servidor por
medio de android y tenemos un webservice escrito en PHP que hace de puente
entre nuestra app y el servidor, pero an nos queda un ltimo paso, realizar la
consulta por medio de una clase AsyncTask.

Nos volvemos a nuestra clase, y creamos una clase interna que herede de
AsyncTask:

En el mtodo doInBackground creamos un if, en el cual introducimos como


condicin el mtodo insertar() (por esa razn es booleano) si los datos han sido
insertados, el mtodo nos devuelve true y nos muestra un Toast con el xito de la
operacin y limpiando nuestro formulario, todo esto debe correr en un hilo ya que
si no bloqueara nuestro AsyncTask e inmediatamente nos genera error la
aplicacin, si los datos no han podido ser insertados, el mtodo insertar nos
devolver false, y nos mostrar un Toast corriendo en un hilo.

Finalmente debemos ir al botn insertar y darle una accin, para cuando se pulse
ejecute todo al mismo tiempo.
Finalmente ya lo tenemos, cuando pulsemos nuestro botn comprobar que no
haya ningn campo vaco, si lo hay, enviar un mensaje y no insertar nada.

La tabla persona debe tener los datos insertados

Das könnte Ihnen auch gefallen