+ All Categories
Home > Mobile > 11.android bases de datos

11.android bases de datos

Date post: 12-Jan-2017
Category:
Upload: guidotic
View: 231 times
Download: 0 times
Share this document with a friend
39
Android Bases de Datos Guido Ticona Hurtado [email protected]
Transcript
Page 1: 11.android   bases de datos

AndroidBases de Datos

Guido Ticona [email protected]

Page 2: 11.android   bases de datos

Existen 3 enfoques para usar Bases de Datos◦ 1.Base de Datos Interna (SQLite)◦ 2.Java JDBC◦ 3.Servicios WEB

Bases de datos

Page 3: 11.android   bases de datos

No requiere conexión de red Mucho más rápido No requiere seguridad

BD interna SQLite

Page 4: 11.android   bases de datos

BD interna SQLite (cont.)

ODMS

11g

DBMS

Servidor

Smartphone

SQLite

Page 5: 11.android   bases de datos

Conexión on-line Cualquier DBMS (se requiere driver jdbc) Se requiere tener abiertos los puertos Recomendable para Intranet Usar VPN

JDBC

Page 6: 11.android   bases de datos

JDBC (cont.)

Smartphone

DBMS

Servidor

Driver JDBC

Page 7: 11.android   bases de datos

Se conectan a cualquier DBMS Los servicios se pueden desarrollar en

cualquier lenguaje y arquitectura Normalmente se usa HTTP Se puede usar SSL

Servicios WEB

Page 8: 11.android   bases de datos

Intercambiar datos entre aplicaciones que no necesariamente estan en el mismo lenguaje, sistema operativo o geografia.

SOAP REST

Servicios WEB

Page 9: 11.android   bases de datos

Servicios WEB

Smartphone

DBMS

Servidor

HTTPSOAPREST WEB

Page 10: 11.android   bases de datos

Open Source Estandar sintaxis SQL Requiere poca memoria 250 kBytes Es transaccional ORM básico para CRUD

SQLite

Page 11: 11.android   bases de datos

TEXT => String INTEGER => long REAL => double Otros tipos de datos necesitan ser

convertidos No se hace validación de tipos de datos

Mapeo de Campos

Page 12: 11.android   bases de datos

android.database.sqlite.* SQLiteOpenHelper Método construcctor Métodos abstractos onCreate() y

onUpgrade() SQLiteDatabase Métodos insert(), update(), delete() execSQL(), rawQuery y otros

API SQLite

Page 13: 11.android   bases de datos

Se crea una Clase Helper para administrar la base de datos

Se crea una clase DAO para administrar los registros de una tabla

Implementación

Page 14: 11.android   bases de datos

Esquema ORMSQLiteOpenHelper constructor()

onCreate()onUpdate()

SQLiteDatabaseinsert()delete()update()execSQL()query()rawQuery()

DAOopen()close()CRUD…

Modelogetters()setters()

Page 15: 11.android   bases de datos

SQLite Administrator No necesita instalación www.yesdel.com/elfec/sqliteadmin.zip

Administrador SQLite

Page 16: 11.android   bases de datos

sqlite3 archivo.db .schema tabla PRAGMA table_info(tabla) .tables .help

Comandos

Page 17: 11.android   bases de datos

SQLite ListActivity CursorAdapter Menu Menu Contextual Intent’s Preferencias

Ejemplo

Page 18: 11.android   bases de datos

1. Implementar getAll() con orderby, getById() y con _id

2. Implementar Holder 3. Implementar CursorAdapter 4. Implementar principal con ListActivity 5. Implementar Actividad Detalle 6. Implementar onMenuItemSelected() 7. Implementar Intent 8. Implementar interface

OnItemLongClickListener y onItemLongClick()

Pasos

Page 19: 11.android   bases de datos

9. Implementar registerForContextMenu(), onCreateContextMenu() con setHeaderTitle()

10. Implementar onContextItemSelected() 11. Implementar XML preferencias 12. Implementar PreferenceActivity con

addPreferencesFromResource() 13. Implementar SharedPreferences con

PreferenceManager.getDefaultSharedPreferences y

registerOnSharedPreferenceChangeListener

Pasos (cont.)

Page 20: 11.android   bases de datos

SQLiteDatabase.beginTransaction()

SQLiteDatabase.setTransactionSuccessful()

SQLiteDatabase.endTransaction()

Transacciones

Page 21: 11.android   bases de datos

Interfaz estandar para conexion a bases de datos relacionales desde Java

Es un Java API para ejecutar SQL Clases e interfaces estan en java.sql

JDBC

Page 22: 11.android   bases de datos

JDBC ClasesDriverManager

Driver

Connection

Statement

ResultSet

Page 23: 11.android   bases de datos

Architectura JDBC

Applicación JDBC Driver

Page 24: 11.android   bases de datos

Class.forName(“oracle.jdbc.driver.OracleDriver”);

Connection c = DriverManager.getConnection(...);

Registrar un Driver

Page 25: 11.android   bases de datos

jdbc:subprotocolo:fuente Cada driver tiene su propio subprotocolo Cada subprotocolo tiene su propia sintaxis Ej: Jdbc:odbc:bdaccess Jdbc:msql://host[:port]/bd

URL JDBC

Page 26: 11.android   bases de datos

Mysql com.mysql.jdbc.Driver 3306 jdbc:mysql://[host][:port]/[database] PostgreSQL org.postgresql.Driver 5432 jdbc:postgresql://host:port/database SQL Server

com.microsoft.jdbc.sqlserver.SQLServerDriver 1433

jdbc:microsoft:sqlserver://host:port;db=db;user=;password=

Oracle oracle.jdbc.driver.OracleDriver 1521

jdbc:oracle:thin:@host:port:sid

URL comunes

Page 27: 11.android   bases de datos

Connection getConnection (String url, String usuario, String clave)

Ejemplo Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@192.168.2.1:1521:dev";

this.conn = DriverManager.getConnection(url,"","");

DriverManager

Page 28: 11.android   bases de datos

Statement createStatement() PreparedStatement prepareStatement(String sql)

CallableStatement prepareCall(String sql)

Metodos de Conexión

Page 29: 11.android   bases de datos

Se usa para ejecutar un SQL ResultSet executeQuery(String) int executeUpdate(String) boolean execute(String)

Statement

Page 30: 11.android   bases de datos

Provee acceso a los datos de la tabla El metodo next() mueve a la siguiente fila El metodo close() libera la memoria

ResultSet

Page 31: 11.android   bases de datos

CallableStatement proc=null; proc = conn.prepareCall("{ call procedimiento(?, ?) }"); proc.setString(1, var1); proc.setInt(2, var2); proc.execute();

Store Procedures

Page 32: 11.android   bases de datos

conn.setAutoCommit(false);

conn.commit();

conn.rollback();

Transacciones

Page 33: 11.android   bases de datos

Mapeo de Tipos de DatosSQL JavaCHAR, VARCHAR, LONGVARCHAR StringNUMERIC, DECIMAL BigDecimalBIT booleanTINYINTbyteSMALLINT shortINTEGER intBIGINT longREAL floatFLOAT, DOUBLEdoubleBINARY, VARBINARY, LONGVARBINARY byte[]DATE java.sql.DateTIME java.sql.TimeTIMESTAMP java.sql.Timestamp

Page 34: 11.android   bases de datos

<uses-permission android:name="android.permission.INTERNET"/>

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()

.permitAll() .build(); StrictMode.setThreadPolicy(policy);

Seguridad Android

Page 35: 11.android   bases de datos

Content Providers Compartir datos entre aplicaciones Arquitectura Cliente-Servidor ContentResolver provee el API para el

cliente ContentProvider es el servidor

Proveedores de Contenido

Page 36: 11.android   bases de datos

Acceso mediante URI content://com.elfec.agenda/persona/23 Prefix: content:// Authority: com.elfec.agenda Entity: persona Identifier: 23

URI

Page 37: 11.android   bases de datos

Paquete android.provider.* Definir un ContentResolver Inicializar con getContentResolver() Usar CRUD (insert, query, update, delete)

Cliente

Page 38: 11.android   bases de datos

Contactos => ContactsContract.Contacts Llamadas => CallLog.Calls Eventos => CalendarContract.Events Imagenes=> MediaStore.Images.Media Archivos => MediaStore.Files SMS => “content://sms/” SMS => “content://sms/inbox”

Ejemplos ContentProvider

Page 39: 11.android   bases de datos

Heredar de ContentProvider Implementar CRUD onCreate() query() insert() update() delete() getType()

Servidor


Recommended