lunes, 30 de junio de 2014

Conectar Oracle 11g con Android mediante Servicio Web con PHP + CodeIgniter en lista personalizada

Para seguir el siguiente tutorial es necesario poseer conocimientos basicos de programacion, ademas de conocimientos basicos en el framework MVC CodeIgniter para PHP y nociones basicas del motor de base de datos Oracle Database 11g XE.

Los siguientes enlaces pueden ayudarte a conocer un poco sobre lo antes mencionado:

1-) http://ellislab.com/codeigniter/user-guide/
2-) http://docs.oracle.com/cd/E29505_01/server.1111/e25789/intro.htm

Continuemos..

Lo primero que haremos es crear un nuevo sitio web para ello necesitaremos tener instalado LAMP en Linux O XAM, WAMP en Windows.

Yo me ayudare en este caso de Dreamweaver ustedes pueden hacerlo con la IDE que crean conveniente, para ello la estructura quedara asi de acuerdo a los directorios de CodeIgniter.


En el directorio application/config/  se encuentra el archivo database.php que es donde configuraremos 
la conexion a nuestra base de datos Oracle 11g Express Edition (Previamente instalada).


Las lineas de especial cuidado son las siguientes:

$tnsname="(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))";
En la anterior linea se define una constante que contiene la descripcion general de una conexion a Oracle.

$db['default']['dbdriver'] = 'oci8';

"oci8" es el valor por defecto que utiliza CodeIgniter con las conexiones a Oracle Database.

En mi caso habilitare el servicio de OracleXE, por razones de rendimiento siempre es preferible manejar dicho servicio configurado como "manual" para no mermar el rendimiento de nuestro equipo.


Con el servicio corriendo procedere a utilizar uno de los esquemas por defecto de Oracle (Esquema HR) 
creamos una conexion y procedemos a ejecutar una consulta a la tabla "employee" la cual posteriormente mostraremos en una lista desplegable en Android a traves del consumo de un Servicio Web en PHP(CodeIgniter).


Como pueden observar ejecutamos una consulta sencilla mostrando 2 resultados empleado y salario lo cual procederemos a utilizarlo con CodeIgniter.

Ponemos a punto nuestro servidor e iniciamos el servicio de Apache2 en Linux o WAMP, XAMP en Windows.


En mi caso utilizare WAMP Server.

Volvemos a nuestro proyecto CodeIgniter y crearemos el respectivo modelo y controlador.


Con nuestro modelo y controlador listos nos dirigimos a nuestro navegador web en mi caso Google Chrome
y buscamos la siguiente URL: http://IP_DEL_SERVIDOR/NOMBRE_SITIO_WEB/CONTROLADOR
en mi caso cumplo el estandard de la siguiente manera: http://192.168.1.2/codeigniter_oracle/empleados

Si hemos configurado bien CodeIgniter, y tenemos a punto nuestro servicio de Oracle y WAMP deberiamos observar la respuesta de nuestro servicio en formato JSON, asi.


Iniciaremos Eclipse y procederemos a crear un nuevo proyecto Android Application.


Crearemos 5 clases.

Iremos una a una, veremos como primer punto la clase URL, esta clase sera la encargada de gestionar las URL de peticion a servicios web en el caso que debamos consumir mas de un servicio.


La clase Conexion tendra simplemente un metodo que hara una peticion POST a nuestro servicio web.
La clase convertidorJSON es una clase utilitaria que la adjuntare en el codigo fuente.



En la clase AdaptadorEmpleados haremos una herencia a ArrayAdapter y utilizaremos el arreglo que parsearemos en nuestra consulta al servicio.


Nuestra actividad principal esta especificada en el codigo fuente pero en ella simplemente crearemos una clase que heredara de Asyntask para ejecutar en segundo plano la consulta a nuestro servicio web 
y parsearemos ademas los controles Android.
Nuestras vistas se conforman del activity_main.xml y un layout alternativo llamado item donde colocaremos
el DISEÑO de nuestra lista.



Si todo a salido correcto corremos nuestro emulador y veremos el resultado final de nuestro trabajo.

Adjunto enlace para descargar el codigo Fuente, espero haber aportado con este tutorial a todos aquellos
que desean adentrarse al desarrollo Android con manejo de servicios web y bases de datos.

https://mega.co.nz/#!tt0WEAaY!BCGiIKem-DhLh9WuRef64ef25muBSIQIqTsaglfZ0Io

2 comentarios: