Sunteți pe pagina 1din 52

UNIVERSIDAD AUTNOMA DE CHIHUAHUA

FACULTAD DE INGENIERA

DOCUMENTACIN DE EXPOSICIN DE TERCER PARCIAL

BASES DE DATOS SQLITE EN ANDROID


ALUMNOS: AUDEN ALONSO LUJAN JAQUEZ ADOLFO RICO MOTIS ERICK MEDINA PORTILLO OSCAR ESPINOZA VEGA MATRCULAS: 214762 214865 214791 214844 GRUPO: 8H EQUIPO: 4 DOCENTE: DR. RICARDO BLANCO VEGA ASIGNATURA: DISEO DE BASES DE DATOS III FECHA DE ENTREGA:
MARTES 15 DE MAYO DEL 2012

Contenido
Introduccin ........................................................................................................................................ 5 Objetivo ............................................................................................................................................... 5 Marco Terico ..................................................................................................................................... 5 SQLite .............................................................................................................................................. 5 Caractersticas ............................................................................................................................. 6 Lenguajes de programacin ........................................................................................................ 7 Software que utiliza SQLite ......................................................................................................... 7 Ejemplo........................................................................................................................................ 8 Android ............................................................................................................................................ 8 Etimologa.................................................................................................................................... 9 Historia ........................................................................................................................................ 9 Usos y dispositivos .................................................................................................................... 10 Diseo y desarrollo.................................................................................................................... 10 Caractersticas ........................................................................................................................... 10 Arquitectura .............................................................................................................................. 12 Seguridad................................................................................................................................... 12 Prctica .............................................................................................................................................. 13 Preparacin Previa ........................................................................................................................ 13 Realizacin de Prctica .................................................................................................................. 19 Aplicacin Funcionando ................................................................................................................ 49 Conclusiones ..................................................................................................................................... 51 Recomendaciones ............................................................................................................................. 51 Referencias ........................................................................................................................................ 52

ndice de Ilustraciones
Ilustracin 1 - Descarga de Android SDK ........................................................................................... 13 Ilustracin 2 - Android SDK Manager ................................................................................................ 14 Ilustracin 3 - Paquetes de Android SDK necesarios......................................................................... 14 Ilustracin 4 - Botn para instalar paquetes de Android SDK ........................................................... 15 Ilustracin 5 - Aceptar trminos de paquetes de Android SDK......................................................... 15 Ilustracin 6 - Descarga de Eclipse .................................................................................................... 15 Ilustracin 7 - Eclipse ejecutable ....................................................................................................... 16 Ilustracin 8 - Instalacin de nuevo software en Eclipse .................................................................. 16 Ilustracin 9 - Nueva fuente de sotftware en Eclipse ....................................................................... 16 Ilustracin 10 - Informacin para ADT en Eclipse ............................................................................. 17 Ilustracin 11 - Seleccin para la instalacin de ADT en Eclipse ....................................................... 17 Ilustracin 12 - Aceptar trminos de ADT en Eclipse ........................................................................ 17 Ilustracin 13 - Preferencias de Eclipse............................................................................................. 18 Ilustracin 14 - Seccin Android en Preferencias de Eclipse............................................................. 18 Ilustracin 15 - Ubicar carpeta android-sdk en Eclipse ..................................................................... 18 Ilustracin 16 - Aceptar cambios en Eclipse ...................................................................................... 19 Ilustracin 17 - Nuevo proyecto ........................................................................................................ 19 Ilustracin 18 - Seleccin de proyecto Android ................................................................................ 19 Ilustracin 19 - Nombre de proyecto ................................................................................................ 19 Ilustracin 20 - Seleccin de versin de plataforma Android ........................................................... 20 Ilustracin 21 - Nombre de paquete ................................................................................................. 20 Ilustracin 22 - Proyecto en Package Explorer .................................................................................. 21 Ilustracin 23 - Expandiendo paquete .............................................................................................. 21 Ilustracin 24 - Crear nueva clase Java ............................................................................................. 21 Ilustracin 25 - Nombrar nueva clase Java........................................................................................ 22 Ilustracin 26 - Cdigo de nueva clase Java ...................................................................................... 22 Ilustracin 27 - Carpeta layout .......................................................................................................... 23 Ilustracin 28 - Botn de edicin de cdigo en archivos .xml........................................................... 24 Ilustracin 29 - Cdigo main.xml ....................................................................................................... 24 Ilustracin 30 - Creando nuevo archivo .xml de interfaz .................................................................. 26 Ilustracin 31 - Seleccin de archivo de interfaz .............................................................................. 26 Ilustracin 32 - Nombrar nuevo archivo de interfaz ......................................................................... 27 Ilustracin 33 - Nombrar nuevo archivo de interfaz ......................................................................... 29 Ilustracin 34 - Nombrar nuevo archivo de interfaz ......................................................................... 30 Ilustracin 35 - Limpiar proyecto ...................................................................................................... 31 Ilustracin 36 - Ventana de limpieza de proyecto ............................................................................ 31 Ilustracin 37 - Archivo Java de entrada al programa....................................................................... 32 Ilustracin 38 - Creacin de nueva clase Java ................................................................................... 35 Ilustracin 39 - Creacin de nueva clase Java ................................................................................... 37 Ilustracin 40 - Creacin de nueva clase Java ................................................................................... 40 3

Ilustracin 41 - Creacin de nueva clase Java ................................................................................... 43 Ilustracin 42 - Ubicacin de AndroidManifest.xml.......................................................................... 45 Ilustracin 43 - Botn de edicin de cdigo de AndroidManifest.xml.............................................. 46 Ilustracin 44 - Ventana "Ejecutar como" ......................................................................................... 47 Ilustracin 45 - Botn AVD Manager................................................................................................. 48 Ilustracin 46 - AVD Manager ........................................................................................................... 48 Ilustracin 47 - Nombrar nuevo AVD ................................................................................................ 48 Ilustracin 48 - Ventana "Ejecutar como" ......................................................................................... 49 Ilustracin 49 - Pantalla principal ...................................................................................................... 49 Ilustracin 50 - Pantalla de insercin ................................................................................................ 49 Ilustracin 51 - Llenado de datos para una nueva insercin ............................................................ 50 Ilustracin 52 - Nueva insercin realizada ........................................................................................ 50 Ilustracin 53 - Pantalla de seleccin de registro a modificar .......................................................... 50 Ilustracin 54 - Desplazado de interfaz hacia abajo.......................................................................... 50 Ilustracin 55 - Modificacin de datos de registro ya existente ....................................................... 50 Ilustracin 56 - Modificacin a registro realizada ............................................................................. 50 Ilustracin 57 - Pantalla de seleccin de registro a eliminar ............................................................ 51 Ilustracin 58 - Desplazado de interfaz hacia abajo.......................................................................... 51 Ilustracin 59 - Eliminacin de registro realizada ............................................................................. 51

Bases de Datos SQLite en Android


El presente documento respalda la informacin dada en la exposicin para el tercer parcial de nuestro equipo. Consiste en la realizacin de una prctica sencilla sobre una base de datos hecha en SQLite e implementada en la plataforma mvil Android.

Introduccin
SQLite lleva varios aos apostando por ser un SMBD ligero que integre las capacidades ms importantes de las bases de datos relacionales. Gracias a esto, diversos dispositivos mviles han hecho a SQLite parte de sus herramientas de desarrollo, como lo es el caso de la plataforma perteneciente a Google, Android.

Objetivo
Conocer el proceso de desarrollo para una aplicacin sencilla de Android al mismo tiempo que se aprende sobre las principales caractersticas y ventajas que SQLite ofrece.

Marco Terico
SQLite

Informacin general

Diseador

D. Richard Hipp

Lanzamiento inicial

17 de agosto de 2000; hace 11 aos

ltima versin estable

3.7.10
16 de enero de 2012; hace 3 meses

Gnero

RDBMS

Programado en

Sistema operativo

Multiplataforma

Licencia

Dominio pblico

SQLite es un sistema de gestin de bases de datos relacional compatible con ACID, contenida en una relativamente pequea biblioteca escrita en C. SQLite es un proyecto de dominio pblico creado por D. Richard Hipp A diferencia de los sistemas de gestin de bases de datos cliente-servidor, el motor de SQLite no es un proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo. El programa utiliza la funcionalidad de SQLite a travs de llamadas simples a subrutinas y funciones. Esto reduce la latencia en el acceso a la base de datos, debido a que las llamadas a funciones son ms eficientes que la comunicacin entre procesos.

Caractersticas La biblioteca implementa la mayor parte del estndar SQL-92, incluyendo transacciones de base de datos atmicas, consistencia de base de datos, aislamiento, y durabilidad (ACID), triggers y la mayor parte de las consultas complejas. SQLite usa un sistema de tipos inusual. En lugar de asignar un tipo a una columna como en la mayor parte de los sistemas de bases de datos SQL, los tipos se asignan a los valores individuales. Por ejemplo, se puede insertar un string en una columna de tipo entero (a pesar de que SQLite tratar en primera instancia de convertir la cadena en un entero). Algunos usuarios consideran esto como una innovacin que hace que la base de datos sea mucho ms til, sobre todo al ser utilizada desde un lenguaje de scripting de tipos dinmicos. Otros usuarios lo ven como un gran inconveniente, ya que la tcnica no es portable a otras bases de datos SQL. SQLite no trataba de transformar los datos al tipo de la columna hasta la versin 3. Varios procesos o hilos pueden acceder a la misma base de datos sin problemas. Varios accesos de lectura pueden ser servidos en paralelo. Un acceso de escritura slo puede ser servido si no se est sirviendo ningn otro acceso concurrentemente. En caso contrario, el acceso de escritura falla devolviendo un cdigo de error (o puede automticamente reintentarse hasta que expira un timeout configurable). Esta situacin de acceso concurrente podra cambiar cuando se est trabajando con tablas temporales. Sin embargo, podra producirse un deadlock debido al multithread. Este punto fue tratado en la versin 3.3.4, desarrollada el 11 de febrero de 2006.

Existe un programa independiente de nombre sqlite que puede ser utilizado para consultar y gestionar los ficheros de base de datos SQLite. Tambin sirve como ejemplo para la escritura de aplicaciones utilizando la biblioteca SQLite. Lenguajes de programacin

La biblioteca puede ser usada desde programas en C/C++, aunque estn disponibles enlaces para Tcl y muchos otros lenguajes de programacin interpretado. SQLite se encuentra embebido en el REALbasic framework, haciendo posible que aplicaciones desarrolladas en REALbasic para Windows, Linux o Mac OS X usen la base de datos SQLite. Existe un mdulo DBI/DBD para Perl disponible en CPAN, DBD::SQLite, no es una interface para SQLite, sino que incluye el motor completo de SQLite en s mismo por lo cual no necesita ningn software adicional. Hay tambin un mdulo para Python llamado PySQLite. Hay otro mdulo para Visual Basic 6 llamado VBSqlite Desde Delphi se puede usar SQLite a travs de los componentes libres ZeosLib. PHP incluye SQLite, desde la versin 5. SQLite tambin funciona con PHP 4 pero no viene incluido en l. Desde Java se puede acceder mediante el driver de SQLiteJDBC Desde Lazarus 0.9.8 y Free Pascal 2.0.0, SQLite est disponibles para programadores de Pascal. Mac OS X v10.4 incluye SQLite, y es una de las opciones en la Core Data API de Apple. AppleScript puede abrir, crear, y manipular base de datos SQLite por medio de la aplicacin de ayuda "Database Events" de Mac OS X 10.4. BlitzMAX posee un MOD que permite trabajar con bases de datos SQLite. El componente de base de datos (gb.db) de Gambas soporta SQLite en sus versiones 1, 2 y 3 El lenguaje de programacin de vdeo juegos Bennu tiene un mod de SQlite disponible El lenguaje de programacin de scripting para Windows AutoIt v.3.x a traves de la DLL SQLite.dll.

Software que utiliza SQLite SQLite es utilizado en una gran variedad de aplicaciones, destacando las siguientes:

Adobe Photoshop Elements utiliza SQLite como motor de base de datos en su ltima versin del producto (la 6.0) en sustitucin del Microsoft Access, utilizado en las versiones anteriores.4 Clementine usa SQLite para guardar su coleccin de datos por defecto. Kexi usa SQLite como un motor de base de datos interno por defecto. Mozilla Firefox usa SQLite para almacenar, entre otros, las cookies, los favoritos, el historial y las direcciones de red vlidas. Los desarrolladores de OpenOffice.org han considerado embeber SQLite en el modelo de base de datos de Base, pero esto depende en gran manera del progreso de sqlite-sdbc-driver, que est todava en estado de alpha. Actualmente han decidido usar HSQLDB. Varias aplicaciones de Apple utilizan SQLite, incluyendo Apple Mail y el gestor de RSS que se distribuye con Mac OS X. El software Aperture de Apple guarda la informacin de las imgenes en una base de datos SQLite, utilizando la API Core Data 7

El navegador web Opera usa SQLite para la gestin de bases de datos WebSQL. Skype es otra aplicacin de gran despliegue que utiliza SQLite. SQLFilter, un plugin para OmniPeek, usa SQLite para indexar paquetes en una base de datos para poder se consultada por medio de SQL. The New Yorker guarda el ndice para un set de DVD conteniendo todos los nmeros publicados por la revista. XBMC Media Center (antes conocido como "XBox Media Center") es un reproductor de medios de audio, video, fotos, etc de cdigo libre (open source) multi-plataforma a la vez que un centro de entretenimiento. Usa SQLite para administrar las libreras de msica, video y fotografas, listas de reproduccin y bookmarks entre otras utilidades menores.

Debido a su pequeo tamao, SQLite es muy adecuado para los sistemas integrados, y tambin est incluido en:

Android BlackBerry Google Chrome iOS Maemo MeeGo Symbian OS webOS

Ejemplo
1. CREATE TABLE tb1 2. ( 3. id_tb1 integer PRIMARY KEY NOT NULL, 4. texto text 5. ); 6. CREATE TABLE tb2 7. ( 8. id_tb2 integer PRIMARY KEY NOT NULL, 9. texto varchar (50), 10. id_tb1FK integer NOT NULL CONSTRAINT fk_id_tb1FK REFERENCES a(id_tb1) ON UPDATE CASCADE 11. );

Android
Android es un sistema operativo basado en Linux, que junto con aplicaciones middleware est enfocado para ser utilizado en dispositivos mviles como telfonos inteligentes, tabletas, Google TV y otros dispositivos. Es desarrollado por la Open Handset Alliance, la cual es liderada por Google. Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en 2005.

Las unidades vendidas de telfonos inteligentes con Android se ubican en el primer puesto en los Estados Unidos, en el segundo y tercer trimestres de 2010. Tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. A la fecha, se han sobrepasado las 400.000 aplicaciones (de las cuales, dos tercios son gratuitas) disponibles para la tienda de aplicaciones oficial de Android: Google Play, sin tener en cuenta aplicaciones de otras tiendas no oficiales para Android, como pueden ser la App Store de Amazon o la tienda de aplicaciones Samsung Apps de Samsung. El sistema operativo est compuesto por 12 millones de lneas de cdigo, incluyendo 3 millones de lneas de XML, 2,8 millones de lneas de lenguaje C, 2,1 millones de lneas de Java y 1,75 millones de lneas de C++. Etimologa Tanto el nombre Android (androide en espaol) como Nexus One hacen alusin a la novela de Philip K. Dick Suean los androides con ovejas elctricas?, que posteriormente fue adaptada al cine como Blade Runner. Tanto el libro como la pelcula se centran en un grupo de androides llamados replicantes del modelo Nexus-6. El logotipo es el robot "Andy". Historia En julio de 2005, Google adquiri Android Inc., una pequea compaa de Palo Alto, California fundada en 2003. En aquel entonces, poco se saba de las funciones de Android Inc. fuera de que desarrollaban software para telfonos mviles. En Google, el equipo liderado por Andy Rubin (cofundador de Danger), desarroll una plataforma para dispositivos mviles basada en el kernel de Linux que fue promocionado a fabricantes de dispositivos y operadores con la promesa de proveer un sistema flexible y actualizable. Se inform que Google haba alineado ya una serie de fabricantes de hardware y software y seal a los operadores que estaba abierto a diversos grados de cooperacin por su parte. Diversos reportes sealaron que Google quera sus servicios de bsqueda y aplicaciones en telfonos mviles y estaba muy empeado en ello. Medios impresos y en lnea pronto reportaron que Google estaba desarrollando un telfono con su marca.

Las versiones de Android reciben nombre de postres en ingls. En cada versin el postre elegido empieza por una letra distinta siguiendo un orden alfabtico: Oficiales: C: Cupcake (v1.5), magdalena glaseada. D: Donut (v1.6), rosquilla. E: clair (v2.0/v2.1), pastel francs conocido en Espaa como pepito o canuto. F: Froyo (v2.2), (abreviatura de frozen yogurt) yogur helado. G: Gingerbread (v2.3), pan de jengibre. H: Honeycomb (v3.0/v3.1/v3.2), panal. I: Ice Cream Sandwich (v4.0), sandwich de helado. Usos y dispositivos El sistema operativo Android se usa en telfonos inteligentes, ordenadores porttiles, netbooks, tabletas, Google TV, relojes de pulsera, auriculares y otros dispositivos. Diseo y desarrollo Android, al contrario que otros sistemas operativos para dispositivos mviles como iOS o Windows Phone, se desarrolla de forma abierta y se puede acceder tanto al cdigo fuente como al listado de incidencias donde se pueden ver problemas an no resueltos y reportar problemas nuevos. En sus comienzos, Android era eminentemente un sistema operativo pensado para usar con teclado, y gracias a un cursor poder navegar entre las aplicaciones. Desde su comienzo, Android ha sido altamente personalizable. Poco despus, antes del lanzamiento del primer telfono Android, esta filosofa cambi para convertirse en eminentemente tctil, y poder competir contra el recin lanzado iPhone. Caractersticas

Diseo de dispositivo Almacenamiento Mensajera

La plataforma es adaptable a pantallas ms grandes y diseo de telfonos tradicionales. SQLite, una base de datos liviana, que es usada para propsitos de almacenamiento de datos. SMS y MMS son formas de mensajera, incluyendo mensajera de texto y ahora la Android Cloud to Device Messaging Framework (C2DM) es parte del servicio de Push Messaging de Android. El navegador web incluido en Android est basado en el motor de renderizado de cdigo abierto WebKit, emparejado con el motor JavaScript V8 de Google Chrome. El navegador obtiene una 10

Navegador Web

puntuacin de 93/100 en el test Acid3.

Soporte de Java

Aunque la mayora de las aplicaciones estn escritas en Java, no hay una mquina virtual Java en la plataforma. El bytecode Java no es ejecutado, sino que primero se compila en un ejecutable Dalvik y corre en la Mquina Virtual Dalvik. Dalvik es una mquina virtual especializada, diseada especficamente para Android y optimizada para dispositivos mviles que funcionan con batera y que tienen memoria y procesador limitados. El soporte para J2ME puede ser agregado mediante aplicaciones de terceros como el J2ME MIDP Runner. Android soporta los siguientes formatos multimedia: AAC, HE-AAC (en contenedores MP4 o 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF y BMP. Entre otros. Descarga progresiva de HTML (HTML5 <video> tag). Adobe Flash Streaming (RTMP) es soportado mediante el Adobe Flash Player. Se planea el soporte de Microsoft Smooth Streaming con el port de Silverlight a Android. Adobe Flash HTTP Dynamic Streaming estar disponible mediante una actualizacin de Adobe Flash Player.

Soporte multimedia

Soporte para streaming

Soporte para hardware Android soporta cmaras de fotos, de vdeo, pantallas tctiles, GPS, acelermetros, giroscopios, magnetmetros, sensores de adicional
proximidad y de presin, termmetro, aceleracin 2D y 3D.

Entorno de desarrollo Google Play

El entorno de desarrollo integrado es Eclipse (actualmente 3.4, 3.5 o 3.6) usando el plugin de Herramientas de Desarrollo de Android. Google Play es un catlogo de aplicaciones gratuitas o de pago en el que pueden ser descargadas e instaladas en dispositivos Android sin la necesidad de un PC. Android soporta videollamada a travs de Google Talk desde su versin HoneyComb. Multitarea real de aplicaciones est disponible, es decir, las aplicaciones que no estn ejecutndose en primer plano reciben ciclos de reloj, a diferencia de otros sistemas de la competencia en la que la multitarea es congelada.

Videollamada Multitarea

Caractersticas basadas La bsqueda en Google a travs de voz est disponible como "Entrada de Bsqueda" desde la versin inicial del sistema. en voz Tethering
Android soporta tethering, que permite al telfono ser usado como un punto de acceso almbrico o inalmbrico (todos los telfonos desde la versin 2.2, no oficial en telfonos con versin 1.6 o superiores mediante aplicaciones disponibles en el Android 11

Market, por ejemplo PdaNet). Para permitir a un PC usar la conexin 3G del mvil android se podra requerir la instalacin de software adicional.

Arquitectura Aplicaciones: las aplicaciones base incluyen un cliente de correo electrnico, programa de SMS, calendario, mapas, navegador, contactos y otros. Todas las aplicaciones estn escritas en lenguaje de programacin Java. Marco de trabajo de aplicaciones: los desarrolladores tienen acceso completo a los mismos APIs del framework usados por las aplicaciones base. La arquitectura est diseada para simplificar la reutilizacin de componentes; cualquier aplicacin puede publicar sus capacidades y cualquier otra aplicacin puede luego hacer uso de esas capacidades (sujeto a reglas de seguridad del framework). Este mismo mecanismo permite que los componentes sean reemplazados por el usuario. Bibliotecas: Android incluye un conjunto de bibliotecas de C/C++ usadas por varios componentes del sistema. Estas caractersticas se exponen a los desarrolladores a travs del marco de trabajo de aplicaciones de Android; algunas son: System C library (implementacin biblioteca C estndar), bibliotecas de medios, bibliotecas de grficos, 3D y SQLite, entre otras. Runtime de Android: Android incluye un set de bibliotecas base que proporcionan la mayor parte de las funciones disponibles en las bibliotecas base del lenguaje Java. Cada aplicacin Android corre su propio proceso, con su propia instancia de la mquina virtual Dalvik. Dalvik ha sido escrito de forma que un dispositivo puede correr mltiples mquinas virtuales de forma eficiente. Dalvik ejecuta archivos en el formato Dalvik Executable (.dex), el cual est optimizado para memoria mnima. La Mquina Virtual est basada en registros y corre clases compiladas por el compilador de Java que han sido transformadas al formato .dex por la herramienta incluida "dx". Ncleo Linux: Android depende de Linux para los servicios base del sistema como seguridad, gestin de memoria, gestin de procesos, pila de red y modelo de controladores. El ncleo tambin acta como una capa de abstraccin entre el hardware y el resto de la pila de software. Seguridad Android es un sistema ms vulnerable, debido principalmente a que el proceso de certificacin de aplicaciones es menos riguroso que el de Apple y el esquema de gestin de permisos para estas, que pone muchas decisiones de seguridad importantes en manos del usuario, lo expone a mayores riesgos y le hace ms atractivo a los ataques de ingeniera social.

12

Prctica
Preparacin Previa
El primer paso es asegurarse de tener instalado Java Development Kit 1.6 o superior. De no ser as se puede descargar de la siguiente direccin URL: http://www.oracle.com/technetwork/java/javase/downloads/index.html Luego es necesario descargar el Android SDK de la direccin URL http://developer.android.com/sdk/index.html, el cual est disponible para Windows, Mac OS y Linux.

Ilustracin 1 - Descarga de Android SDK

En Windows, el procedimiento de instalacin es mucho ms sencillo si se escoge el instalador .exe, en cuyo caso simplemente hay que seguir los pasos. NOTA: El instalador del Android SDK verificar si se encuentra instalado JDK 1.6 o superior en el sistema. En caso de que el instalador no detecte la instalacin de JDK siendo que ya ha sido instalado, presionar Atrs y Siguiente en el instalador. Esto debe corregirlo. Una vez instalado el SDK de Android podemos iniciar la aplicacin SDK Manager desde la cual se pueden descargar las diferentes versiones de Plataforma del SDK de Android.

13

Ilustracin 2 - Android SDK Manager

Para la presente prctica es necesario descargar el paquete Android 1.6 (API 4) SDK Platform. NOTA: Se recomienda instalar la versin 1.6 porque es la versin ms antigua que an se encuentra en uso en el mercado.

Adems de esto es necesario descargar los paquetes Tools->Android SDK Tools, Tools->Android SDK Platform-tools y Android 4.0.3 (API 15)->Documentation for Android SDK.

Ilustracin 3 - Paquetes de Android SDK necesarios

A continuacin se debe presionar el botn Install X Packages

14

Ilustracin 4 - Botn para instalar paquetes de Android SDK

Presionar la opcin Accept All y a continuacin el botn Install

Ilustracin 5 - Aceptar trminos de paquetes de Android SDK

Esperar a que la instalacin termine y listo, el Android SDK con la Plataforma 1.6 estar lista para utilizarse. A continuacin es necesario descargar el ambiente de desarrollo Eclipse de la siguiente direccin URL: http://www.eclipse.org/downloads/packages/eclipse-classic-372/indigosr2

Ilustracin 6 - Descarga de Eclipse

Se debe seleccionar el sistema operativo adecuado en la parte de la derecha. La descarga de Eclipse se realiza en un archivo comprimido .zip. Eclipse no necesita de instalacin, simplemente se descomprime y se ejecuta. Para comenzar a utilizar Eclipse descomprima el software en la ubicacin de su preferencia y a continuacin ejecute eclipse.exe (en el caso de Windows).

15

Ilustracin 7 - Eclipse ejecutable

Una vez abierto Eclipse es necesario instalarle el Plug-in para Android ADT (Android Development Tools). Esto se hace de la siguiente manera: 1. Ir al men Help -> Install New Software

Ilustracin 8 - Instalacin de nuevo software en Eclipse

2. Presiona el botn Add

Ilustracin 9 - Nueva fuente de sotftware en Eclipse

3. Escribir como nombre ADT y como direccin: https://dl-ssl.google.com/android/eclipse/ Presionar OK 16

Ilustracin 10 - Informacin para ADT en Eclipse

4. Palomear el software Developer Tools y presionar Next >

Ilustracin 11 - Seleccin para la instalacin de ADT en Eclipse

5. Seguir presionando Next >, aceptar los trminos de la licencia

Ilustracin 12 - Aceptar trminos de ADT en Eclipse

6. Presionar Finish y esperar a que termine la instalacin. Una vez instalado ADT en Eclipse debemos ubicar el SDK de Android desde Eclipse. Para hacer esto vamos a Window->Preferences

17

Ilustracin 13 - Preferencias de Eclipse

A continuacin seleccionar Android del lado izquierdo y presionar el botn Browse

Ilustracin 14 - Seccin Android en Preferencias de Eclipse

Buscar la capeta android-sdk comnmente ubicada en Archivos de Programa o Program Files y presionar OK

Ilustracin 15 - Ubicar carpeta android-sdk en Eclipse

Luego presionar OK en la ventana de Preferencias de Eclipse, y listo!

18

Ilustracin 16 - Aceptar cambios en Eclipse

Una vez seguidos todos los pasos anteriores podemos comenzar con la prctica.

Realizacin de Prctica
Una vez abierto el entorno de desarrollo Eclipse, el primer paso es ir a File->New->Project

Ilustracin 17 - Nuevo proyecto

A continuacin seleccionar Android->Android Project de la lista y presionar Next >

Ilustracin 18 - Seleccin de proyecto Android

Dar nombre al proyecto, dejar todas las dems opciones intactas y presionar Next >

Ilustracin 19 - Nombre de proyecto

19

Palomear la versin Android 1.6 para la cual programaremos la prctica. Debido a que nicamente descargamos la plataforma Android 1.6, sta ser la nica en aparecer. En la captura de pantalla aparece otra versin debido a la computadora en donde se realiz. Ignora esto.

Ilustracin 20 - Seleccin de versin de plataforma Android

Proporcionar un nombre al paquete principal de la aplicacin. Esto es completamente necesario. Dejar todas las dems opciones intactas y presionar Finish.

Ilustracin 21 - Nombre de paquete

Una vez hecho esto aparecer el nuevo proyecto en Eclipse del lado izquierdo, dentro del componente Package Explorer

20

Ilustracin 22 - Proyecto en Package Explorer

Expandir la carpeta src y luego el paquete com.bd3.sqlite

Ilustracin 23 - Expandiendo paquete

El archivo PracticaSQLiteActivity.java es el punto de entrada a nuestra aplicacin Android. Ms adelante trabajaremos con l. Por ahora vamos a crear el componente Java que se encargar de crear la base de datos SQLite dentro de Android. Para eso demos clic derecho sobre el paquete com.bd3.sqlite, luego New>Class

Ilustracin 24 - Crear nueva clase Java

21

Demosle el nombre MontanasSQLiteHelper y presionemos Finish.

Ilustracin 25 - Nombrar nueva clase Java

Una vez hecho esto se abrir el archivo automticamente

Ilustracin 26 - Cdigo de nueva clase Java

Una vez abierto el archivo remplazar todo su cdigo con el cdigo siguiente:
package com.bd3.sqlite; import import import import android.content.Context; android.database.sqlite.SQLiteDatabase; android.database.sqlite.SQLiteDatabase.CursorFactory; android.database.sqlite.SQLiteOpenHelper;

public class MontanasSQLiteHelper extends SQLiteOpenHelper { //Sentencia SQL para crear la tabla de Montanas String sqlCreate = "CREATE TABLE Montanas " + "(nombre TEXT, altura REAL)"; //Constructor por default public MontanasSQLiteHelper(Context contexto, String nombre, CursorFactory factory, int version) { super(contexto, nombre, factory, version); } @Override public void onCreate(SQLiteDatabase db) { //Se ejecuta la sentencia SQL de creacin de la tabla db.execSQL(sqlCreate); } /* * Este mtodo es ejecutado cuando la aplicacin es actualizada

22

*/ @Override public void versionNueva) { //NOTA: opcin de // formato. // antigua //

onUpgrade(SQLiteDatabase db, int versionAnterior, int Por simplicidad del ejemplo aqu utilizamos directamente la eliminar la tabla anterior y crearla de nuevo vaca con el nuevo Sin embargo lo normal ser que haya que migrar datos de la tabla a la nueva, por lo que este mtodo debera ser ms elaborado.

//Se elimina la versin anterior de la tabla db.execSQL("DROP TABLE IF EXISTS Montanas"); //Se crea la nueva versin de la tabla db.execSQL(sqlCreate); } }

A continuacin guardar el archivo presionando Ctrl+S o File->Save. NOTA: Para entender el cdigo favor de leer los comentarios.

Acto seguido crearemos los archivos .xml que darn a la aplicacin su interfaz de usuario. Expandir la carpeta res del proyecto y dar doble click sobre main.xml para abrirlo

Ilustracin 27 - Carpeta layout

Una vez dentro del archivo dar click en el botn en la parte de abajo que dice main.xml para poder editar el cdigo directamente.

23

Ilustracin 28 - Botn de edicin de cdigo en archivos .xml

El editor del cdigo debe verse as:

Ilustracin 29 - Cdigo main.xml

Remplazar el cdigo con el siguiente:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:layout_marginBottom="15dp" > <Button android:id="@+id/BtnInsertar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:text="Insertar" /> <Button android:id="@+id/BtnModificar" android:layout_width="wrap_content" android:layout_height="wrap_content"

24

android:layout_centerHorizontal="true" android:text="Modificar" /> <Button android:id="@+id/BtnEliminar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:text="Eliminar" /> </RelativeLayout> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:id="@+id/linearLayoutTabla" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="7dp" android:gravity="center_horizontal" android:text="MONTAAS" android:textSize="30dp" android:textColor="#ffffff" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="5dp" android:text="NOMBRE" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:text="ALTURA"

25

/> </RelativeLayout> </LinearLayout> </ScrollView> </LinearLayout>

Guardar los cambios. Acto seguido dar clic derecho en la carpeta layout del proyecto, ir a New->Other

Ilustracin 30 - Creando nuevo archivo .xml de interfaz

Seleccionar Android XML Layout File y presionar Next >

Ilustracin 31 - Seleccin de archivo de interfaz

26

Dar el nombre layout_insertar.xml al nuevo archivo de interfaz .xml y presionar Finish.

Ilustracin 32 - Nombrar nuevo archivo de interfaz

De igual manera presionar el botn de la parte de abajo que dice layout_insertar.xml para poder editar el cdigo y sobre-escribirlo con:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Insertar" android:textAppearance="?android:attr/textAppearanceLarge" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:text="Nombre" /> <EditText android:id="@+id/textoNombre" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="textCapWords"/> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" >

27

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:text="Altura" /> <EditText android:id="@+id/textoAltura" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="numberDecimal"/> </LinearLayout> <RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp"> <Button android:id="@+id/botonGuardar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="10dp" android:text="Guardar" /> <Button android:id="@+id/botonCancelar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="10dp" android:text="Cancelar" /> </RelativeLayout> </LinearLayout>

Guardar los cambios. A continuacin crear un nuevo archivo .xml en la carpeta layout del proyecto siguiendo los mismos pasos descritos anteriormente pero ahora nombrarlo layout_eliminar.xml

28

Ilustracin 33 - Nombrar nuevo archivo de interfaz

Y sobre-escribir su cdigo con el siguiente:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/BtnRegresar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Volver" android:layout_gravity="right" />" <ScrollView android:id="@+id/scrollView1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:id="@+id/eliminarLl" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Presione\n para Eliminar" android:textSize="30dp" android:textColor="#ffffff" android:gravity="center_horizontal" android:layout_marginBottom="20dp" /> </LinearLayout> </ScrollView> </LinearLayout>

29

Guardar los cambios y crear un nuevo archivo .xml en la carpeta layout del proyecto de la misma manera. Ahora nombrar al archivo layout_modificar.xml.

Ilustracin 34 - Nombrar nuevo archivo de interfaz

Y sobre-escribir su cdigo con el siguiente:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/BtnRegresar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Volver" android:layout_gravity="right" />" <ScrollView android:id="@+id/scrollView1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:id="@+id/eliminarLl" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Seleccionar Registro" android:textSize="30dp" android:textColor="#ffffff" android:gravity="center_horizontal" android:layout_marginBottom="20dp" /> </LinearLayout>

30

</ScrollView> </LinearLayout>

Guardar los cambios. Acto seguido debemos hacer clic en el men Project->Clean

Ilustracin 35 - Limpiar proyecto

Establecer las opciones como se muestra en la siguiente imagen y presionar OK.

Ilustracin 36 - Ventana de limpieza de proyecto

31

A continuacin modificaremos el archivo Java que sirve de entrada a nuestra aplicacin de Android, llamado PracticaSQLiteActivity.java

Ilustracin 37 - Archivo Java de entrada al programa

Remplazar su cdigo con el siguiente:


package com.bd3.sqlite; import import import import import import import import import import import android.app.Activity; android.content.Intent; android.database.Cursor; android.database.sqlite.SQLiteDatabase; android.graphics.Color; android.os.Bundle; android.view.View; android.widget.Button; android.widget.LinearLayout; android.widget.RelativeLayout; android.widget.TextView;

public class PracticaSQLiteActivity extends Activity { /* * El mtodo onCreate() se ejecuta al crearse la actividad. Esto significa * que nicamente se ejecuta una sola vez para cada actividad, a menos * que la actividad deba ser eliminada por falta de memoria y necesite * volverse a crear. */ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* * Establecer la iterfaz de usuario para esta actividad * La variable R.layout.main hace referencia al archivo main.xml * dentro de la carpeta res->layout del proyecto. */ setContentView(R.layout.main); /*Crear una instancia del objeto MontanasSQLiteHelper, el cual * nos permite crear la tabla Montanas o abrirla en caso de que * ya exista. */ MontanasSQLiteHelper montanasHelper =

32

new MontanasSQLiteHelper(this,"TablaMontanas",null,1); /* * Mediante el objeto db ser posible ejecutar queries en la tabla * Montanas. Ntese que se abre en modo lectura. */ SQLiteDatabase db = montanasHelper.getReadableDatabase(); /* * Componente que contiene las filas de la tabla Montanas en la interfaz * de usuario. */ LinearLayout llTabla = (LinearLayout) findViewById(R.id.linearLayoutTabla); //Comprobar si la base de datos ha sido abierta correcamente if (db!=null){ /* * Obtener informacin de la BD mediate un query. * El resultado del query es almacenado en el objeto cursor. * El objeto cursor permite visualizar la informacin obtenida * mediante el query fila por fila. */ Cursor cursor = db.rawQuery("select * from Montanas", null); //Ir al primer resultado del query cursor.moveToFirst(); //Mientras que siga habiendo resultados while(!cursor.isAfterLast()){ //Aadir la fila actual a la tabla en la interfaz de usuario //Obtener valores de la base de datos String nombre=cursor.getString(0); double altura=cursor.getDouble(1); //Construir componente de la fila RelativeLayout fila = new RelativeLayout(this); //Construir componente que tendr el nombre de la fila TextView textoNombre = new TextView(this); textoNombre.setText(nombre); textoNombre.setTextColor(Color.WHITE); //Agregar nombre a la fila fila.addView(textoNombre); RelativeLayout.LayoutParams paramsNombre = new RelativeLayout.LayoutParams (RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRA P_CONTENT); paramsNombre.addRule(RelativeLayout.ALIGN_PARENT_LEFT, -1); textoNombre.setLayoutParams(paramsNombre); //Construir componente que tendr la altura de la fila TextView textoAltura = new TextView(this);

33

textoAltura.setText(Double.toString(altura)); textoAltura.setTextColor(Color.WHITE); //Agregar altura a la fila fila.addView(textoAltura); RelativeLayout.LayoutParams paramsAltura = new RelativeLayout.LayoutParams (RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRA P_CONTENT); paramsAltura.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, -1); textoAltura.setLayoutParams(paramsAltura); //Introducir la fila a la interfaz de usuario llTabla.addView(fila); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams (LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CON TENT); params.setMargins(10, 0, 10, 0); fila.setLayoutParams(params); //Mover el cursor al siguiente resultado cursor.moveToNext(); } //Cerrar la base de datos db.close(); } //Declarar y definir acciones para el botn Insertar Button botonInsertar = (Button) findViewById(R.id.BtnInsertar); botonInsertar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //Iniciar actividad para Insertar startActivity(new Intent(PracticaSQLiteActivity.this,Insertar.class)); //Finalizar actividad actual finish(); } }); //Declarar y definir acciones para el botn Eliminar Button botonEliminar = (Button) findViewById(R.id.BtnEliminar); botonEliminar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //Iniciar actividad para Eliminar startActivity(new Intent(PracticaSQLiteActivity.this,Eliminar.class)); //Finalizar actividad actual finish(); } }); //Declarar y definir acciones para el botn Modificar

34

Button botonModificar = (Button) findViewById(R.id.BtnModificar); botonModificar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //Iniciar actividad para Modificar startActivity(new Intent(PracticaSQLiteActivity.this,Modificar.class)); //Finalizar actividad actual finish(); } }); } }

Guardar los cambios. NOTA: Ignorar errores. Esto es normal. A continuacin dar clic derecho sobre el paquete com.bd3.sqlite , luego New->Class. Nombrar a la clase Insertar.

Ilustracin 38 - Creacin de nueva clase Java

Remplazar el cdigo con el siguiente:


package com.bd3.sqlite; import import import import import import import import android.app.Activity; android.content.Intent; android.database.sqlite.SQLiteDatabase; android.os.Bundle; android.view.View; android.widget.Button; android.widget.EditText; android.widget.Toast;

public class Insertar extends Activity{ @Override

35

protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); /* * Establecer la iterfaz de usuario para esta actividad * La variable R.layout.layout_insertar hace referencia al archivo * layout_insertar.xml dentro de la carpeta res->layout del proyecto. */ setContentView(R.layout.layout_insertar); //Declarar y definir funcin del botn Guardar Button botonGuardar = (Button) findViewById(R.id.botonGuardar); botonGuardar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /*Crear una instancia del objeto MontanasSQLiteHelper, el cual * nos permite crear la tabla Montanas o abrirla en caso de que * ya exista. */ MontanasSQLiteHelper montanasHelper = new MontanasSQLiteHelper(Insertar.this,"TablaMontanas",null,1); /* * Mediante el objeto db ser posible ejecutar queries en la tabla * Montanas. Ntese que se abre en modo escritura. */ SQLiteDatabase db = montanasHelper.getWritableDatabase(); //Si la base de datos se abri correctamente if (db!=null){ //Obtener nombre introducido por el usuario EditText textoNombre= (EditText) findViewById(R.id.textoNombre); String nombre = textoNombre.getText().toString(); //Si el usuario no insert nombre utilizar "SIN NOMBRE" if (nombre.contentEquals("")) nombre = "SIN NOMBRE"; //Obtener altura introducida por el usuario EditText textoAltura= (EditText) findViewById(R.id.textoAltura); double altura; //Si el usuario no insert altura utilizar 0 if (textoAltura.getText().toString().contentEquals("")) altura = 0; else altura = Double.parseDouble(textoAltura.getText().toString());

36

//Ejecutar el query que inserta la nueva fila db.execSQL("INSERT INTO Montanas (nombre, altura) " + "VALUES ('" + nombre + "'," + altura + ")"); //Cerrar base de datos db.close(); } //Mostrar mensaje de Guardado Toast.makeText(Insertar.this, "Guardado", Toast.LENGTH_SHORT).show(); //Iniciar actividad principal startActivity(new Intent(Insertar.this,PracticaSQLiteActivity.class)); //Finalizar la actividad actual finish(); } });

//Declarar y definir acciones para el botn Modificar Button botonCancelar = (Button) findViewById(R.id.botonCancelar); botonCancelar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //Iniciar actividad principal startActivity(new Intent(Insertar.this,PracticaSQLiteActivity.class)); //Finalizar la actividad actual finish(); } }); } }

Nuevamente crear una nueva clase en el paquete com.bd3.sqlite ahora con el nombre de Eliminar.

Ilustracin 39 - Creacin de nueva clase Java

37

Remplazar su cdigo con el siguiente:


package com.bd3.sqlite; import import import import import import import import import android.app.Activity; android.content.Intent; android.database.Cursor; android.database.sqlite.SQLiteDatabase; android.os.Bundle; android.view.View; android.widget.Button; android.widget.LinearLayout; android.widget.Toast;

public class Eliminar extends Activity{ SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); /* * Establecer la iterfaz de usuario para esta actividad * La variable R.layout.layout_eliminar hace referencia al archivo * layout_eliminar.xml dentro de la carpeta res->layout del proyecto. */ setContentView(R.layout.layout_eliminar); /*Crear una instancia del objeto MontanasSQLiteHelper, el cual * nos permite crear la tabla Montanas o abrirla en caso de que * ya exista. */ MontanasSQLiteHelper montanasHelper = new MontanasSQLiteHelper(this,"TablaMontanas",null,1); /* * Mediante el objeto db ser posible ejecutar queries en la tabla * Montanas. Ntese que se abre en modo escritura. */ db = montanasHelper.getWritableDatabase(); /* * Componente donde se crearn los botones para eliminar registros * en la interfaz de usuario */ LinearLayout llEliminar = (LinearLayout) findViewById(R.id.eliminarLl); //Si la base de datos fue abierta de manera correcta if (db!=null){ /* * Obtener informacin de la BD mediante un query. * Ntese que se selecciona la columna "rowid", la cual nunca fue

38

* creada explcitamente. Esto se debe a que SQLite crea esta columna * automticamente para cada tabla, a menos que se especifique de otra * manera. */ Cursor cursor = db.rawQuery("SELECT rowid, nombre, altura FROM Montanas", null); //Ir al primer resultado del query cursor.moveToFirst(); //Mientras que siga habiendo resultados while(!cursor.isAfterLast()){ //Aadir botn para eliminar fila actual //Obtener valores de la base de datos final int rowid = cursor.getInt(0); String nombre=cursor.getString(1); nombre = nombre.concat(" "+Double.toString(cursor.getDouble(2))); //Crear el botn y asignarle su accin Button botonEliminar = new Button(this); botonEliminar.setText(nombre); botonEliminar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //Ejecutar query que elimina la fila de la tabla db.execSQL("DELETE FROM Montanas " + "WHERE rowid="+rowid); //Esconder botn v.setVisibility(View.GONE); //Mostrar mensaje de Eliminado Toast.makeText(Eliminar.this, "Eliminado", Toast.LENGTH_SHORT).show(); } }); //Aadir botn a la interfaz de usuario llEliminar.addView(botonEliminar); //Mover el cursor al siguiente resultado cursor.moveToNext(); } } //Declarar y definir acciones para el botn Volver Button botonVolver = (Button) findViewById(R.id.BtnRegresar); botonVolver.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //Iniciar actividad principal startActivity(new Intent(Eliminar.this,PracticaSQLiteActivity.class)); //Finalizar actividad actual finish();

39

} }); } /* * El mtodo onDestroy() es ejecutado al momento de destruir la actividad */ @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); //Cerrar la base de datos db.close(); } }

Repetir el proceso pero ahora nombrar a la nueva clase Java Modificar

Ilustracin 40 - Creacin de nueva clase Java

Y remplazar el cdigo con el siguiente:


package com.bd3.sqlite; import import import import import import import import android.app.Activity; android.content.Intent; android.database.Cursor; android.database.sqlite.SQLiteDatabase; android.os.Bundle; android.view.View; android.widget.Button; android.widget.LinearLayout;

public class Modificar extends Activity{ SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) {

40

// TODO Auto-generated method stub super.onCreate(savedInstanceState); /* * Establecer la iterfaz de usuario para esta actividad * La variable R.layout.layout_insertar hace referencia al archivo * layout_insertar.xml dentro de la carpeta res->layout del proyecto. */ setContentView(R.layout.layout_modificar); /*Crear una instancia del objeto MontanasSQLiteHelper, el cual * nos permite crear la tabla Montanas o abrirla en caso de que * ya exista. */ MontanasSQLiteHelper montanasHelper = new MontanasSQLiteHelper(this,"TablaMontanas",null,1); /* * Mediante el objeto db ser posible ejecutar queries en la tabla * Montanas. Ntese que se abre en modo escritura. */ db = montanasHelper.getWritableDatabase(); //Componente donde se mostrarn los botones para elegir qu fila modificar LinearLayout llEliminar = (LinearLayout) findViewById(R.id.eliminarLl); //Si la base de datos se abri correctamente if (db!=null){ //Obtener informacin de la BD mediante un query Cursor cursor = db.rawQuery("SELECT rowid, nombre, altura FROM Montanas", null); //Ir al primer resultado del query cursor.moveToFirst(); //Mientras siga habiendo resultados en el query while(!cursor.isAfterLast()){ //Aadir botn para modificar fila actual //Obtener valores de la base de datos final int rowid = cursor.getInt(0); final String nombre=cursor.getString(1); final double altura = cursor.getDouble(2); //Crear el botn e introducirlo a la interfaz de usuario Button botonModificar = new Button(this); botonModificar.setText(nombre+" - "+Double.toString(altura)); botonModificar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /* * Crear componente para iniciar la actividad que permitir la * modificacin de la fila seleccionada */

41

Intent intent = new Intent(Modificar.this,ModificarRegistro.class); /* * Proporcionar informacin extra a la actividad que permitir la * modificacin de la fila seleccionada mediante el objeto intent */ intent.putExtra("rowid", rowid); intent.putExtra("nombre", nombre); intent.putExtra("altura", altura); //Iniciar actividad para Modificar Registro startActivity(intent); //Finalizar actividad actual finish(); } }); //Aadir botn a la interfaz de usuario llEliminar.addView(botonModificar); //Mover el cursor al siguiente resultado cursor.moveToNext(); } } //Declarar y definir acciones para el botn Volver Button botonVolver = (Button) findViewById(R.id.BtnRegresar); botonVolver.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { startActivity(new Intent(Modificar.this,PracticaSQLiteActivity.class)); finish(); } }); } /* * El mtodo onDestroy() es ejecutado al momento de destruir la actividad */ @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); //Cerrar la base de datos db.close(); } }

Nuevamente crear una nueva clase Java en el mismo paquete y nombrarla ModificarRegistro

42

Ilustracin 41 - Creacin de nueva clase Java

Remplazar el cdigo con el siguiente:


package com.bd3.sqlite; import import import import import import import import android.app.Activity; android.content.Intent; android.database.sqlite.SQLiteDatabase; android.os.Bundle; android.view.View; android.widget.Button; android.widget.EditText; android.widget.Toast;

public class ModificarRegistro extends Activity{ EditText textoNombre, textoAltura; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); /* * Establecer la iterfaz de usuario para esta actividad * La variable R.layout.layout_insertar hace referencia al archivo * layout_insertar.xml dentro de la carpeta res->layout del proyecto. */ setContentView(R.layout.layout_insertar); /* * Asignar nombre enviado a travs del objeto Intent a la interfaz * de usuario */ textoNombre= (EditText) findViewById(R.id.textoNombre); textoNombre.setText(getIntent().getStringExtra("nombre")); /* * Asignar altura enviada a travs del objeto Intent a la interfaz

43

* de usuario */ textoAltura= (EditText) findViewById(R.id.textoAltura); textoAltura.setText(Double.toString(getIntent().getDoubleExtra("altura", 0))); //Obtener rowid enviada a travs del objeto Intent final int rowid = getIntent().getIntExtra("rowid", -1); //Declarar y definir funcin del botn Guardar Button botonGuardar = (Button) findViewById(R.id.botonGuardar); botonGuardar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /*Crear una instancia del objeto MontanasSQLiteHelper, el cual * nos permite crear la tabla Montanas o abrirla en caso de que * ya exista. */ MontanasSQLiteHelper montanasHelper = new MontanasSQLiteHelper(ModificarRegistro.this,"TablaMontanas",null,1); /* * Mediante el objeto db ser posible ejecutar queries en la tabla * Montanas. Ntese que se abre en modo escritura. */ SQLiteDatabase db = montanasHelper.getWritableDatabase(); //Si la base de datos se abri correctamente if (db!=null){ //Obtener nombre introducido por el usuario String nombre = textoNombre.getText().toString(); //Si el usuario no insert nombre utilizar "SIN NOMBRE" if (nombre.contentEquals("")) nombre = "SIN NOMBRE"; //Obtener altura introducida por el usuario double altura; //Si el usuario no insert altura utilizar 0 if (textoAltura.getText().toString().contentEquals("")) altura = 0; else altura = Double.parseDouble(textoAltura.getText().toString()); //Ejecutar el query que actualiza fila db.execSQL("UPDATE Montanas SET nombre='"+nombre+"', " + "altura=" + altura + " WHERE rowid=" + rowid);

44

//Cerrar base de datos db.close(); } //Mostrar mensaje de Guardado Toast.makeText(ModificarRegistro.this, "Guardado", Toast.LENGTH_SHORT).show(); //Iniciar actividad principal startActivity(new Intent(ModificarRegistro.this,PracticaSQLiteActivity.class)); //Finalizar la actividad actual finish(); } }); //Declarar y definir acciones para el botn Modificar Button botonCancelar = (Button) findViewById(R.id.botonCancelar); botonCancelar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //Iniciar actividad principal startActivity(new Intent(ModificarRegistro.this,PracticaSQLiteActivity.class)); //Finalizar la actividad actual finish(); } }); } }

A continuacin debemos modificar el archivo AndroidManifest.xml, el cual guarda configuracin bsica sobre la aplicacin.

Ilustracin 42 - Ubicacin de AndroidManifest.xml

Dar doble clic en l para abrirlo, y luego dar clic en el botn de la parte de abajo el cual dice AndroidManifest.xml para modificar su cdigo directamente.

45

Ilustracin 43 - Botn de edicin de cdigo de AndroidManifest.xml

Remplazar el cdigo con el siguiente:


<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bd3.sqlite" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".PracticaSQLiteActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Insertar" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> <activity android:name=".Eliminar" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> <activity android:name=".Modificar" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> <activity android:name=".ModificarRegistro"

46

android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> </application> </manifest>

Una vez hecho esto estamos listos para probar la aplicacin, para lo cual existen dos opciones: 1. Probar la aplicacin utilizando un dispositivo fsico. Se debe conectar el dispositivo a la computadora mediante un cable USB. Si el sistema operativo utilizado es Windows en algunas ocasiones es necesario instalar los controladores de dispositivo correspondiente. En Linux es posible que se deban asignar permisos especiales al dispositivo. Una vez realizada esta configuracin con xito simplemente presionamos F11 para correr la aplicacin, en cuyo caso debemos indicar que deseamos ejecutar la aplicacin como una aplicacin Android.

Ilustracin 44 - Ventana "Ejecutar como"

2. Probar la aplicacin en un emulador. Para ejecutar la aplicacin en un emulador primero es necesario crear y configurar el mismo. Hacemos esto presionando el cono de emuladores de Android en Eclipse.

47

Ilustracin 45 - Botn AVD Manager

Presionar el botn New para crear un nuevo emulador.

Ilustracin 46 - AVD Manager

Ponerle el nombre AVD1.6 y seleccionar la plataforma Android 1.6 API Level 4 y presionar el botn Create AVD

Ilustracin 47 - Nombrar nuevo AVD

NOTA: En la imagen anterior se muestra como plataforma seleccionada la Android 2.2 API Level 8 debido a las configuraciones de la computadora donde fue tomada. A continuacin cerrar la ventana de Android Virtual Device Manager y presionar F11 para correr la aplicacin. Indicar que deseamos ejecutar la aplicacin como una aplicacin Android.

48

Ilustracin 48 - Ventana "Ejecutar como"

Con esto finaliza la prctica. www.developer.android.com

Para

ms

informacin

dudas

visitar

la

URL

Aplicacin Funcionando
A continuacin se muestran imgenes de la aplicacin funcionando en un Sony Ericsson Xperia X10 Mini Pro.

Ilustracin 49 - Pantalla principal

Ilustracin 50 - Pantalla de insercin

49

Ilustracin 51 - Llenado de datos para una nueva insercin

Ilustracin 54 - Desplazado de interfaz hacia abajo

Ilustracin 52 - Nueva insercin realizada

Ilustracin 55 - Modificacin de datos de registro ya existente

Ilustracin 53 - Pantalla de seleccin de registro a modificar

Ilustracin 56 - Modificacin a registro realizada

50

Ilustracin 57 - Pantalla de seleccin de registro a eliminar

Ilustracin 59 - Eliminacin de registro realizada

Ilustracin 58 - Desplazado de interfaz hacia abajo

Conclusiones
Las tecnologas de informacin forman parte de una ciencia que avanza da con da a una velocidad impresionante, por lo cual resulta importante estar actualizados para poder ofrecer un servicio de calidad como ingenieros. Resulta adems importante mencionar que Android como plataforma para mviles es sin duda una buena plataforma que aprender y con que relacionarse, debido a sus capacidades y facilidades.

Recomendaciones
Como equipo recomendamos a nuestros compaeros invertir tiempo de investigacin sobre las nuevas tecnologas que aparecen en nuestro mercado laboral, ya que muchas de ellas significan una posibilidad sustancial de crecer como profesionistas e incluso como empresarios.

51

Referencias
Hipp, D. R. (s.f.). SQLite. Recuperado el 14 de Mayo de 2012, de Small. Fast. Reliable.Choose any three.: http://www.sqlite.org/ Inc., Google. (s.f.). Android. Recuperado el 14 de Mayo de 2012, de http://www.android.com/ Inc., Google. (s.f.). Android Developers. Recuperado el 14 de Mayo de 2012, de http://developer.android.com/index.html ORACLE. (s.f.). Java SE Downloads. Recuperado el 14 de Mayo de 2012, de http://www.oracle.com/technetwork/java/javase/downloads/index.html The Eclipse Foundation. (s.f.). Eclipse. Recuperado el 14 de Mayo de 2012, de http://www.eclipse.org/ Wikipedia. (s.f.). Android. Recuperado el 14 de Mayo de 2012, de http://es.wikipedia.org/wiki/Android Wikipedia. (s.f.). SQLite. Recuperado el 14 de Mayo de 2012, de http://es.wikipedia.org/wiki/SQLite

52

S-ar putea să vă placă și