SlideShare a Scribd company logo
1 of 81
Download to read offline
Análisis y Diseño
      de Software
Tema 4.5.1
Acceso a Datos
Base de Datos

      Carlos A. Iglesias <cif@gsi.dit.upm.es>
     Departamento de Ingeniería de Sistemas Telemáticos
                                 http://moodle.dit.upm.es
Leyenda
Teoría


Ejercicio práctico en el ordenador


Ampliación de conocimientos


Lectura / Vídeo / Podcast


Práctica libre / Experimentación



                       Acceso a Datos   2
Temario
●   4.1 Introducción a Android [Gar10, cap1-2 ]
●   4.2 Desarrollo con Android [Gar10, cap3-5]
●   4.3 Interfaces de Usuario [Gar10, cap6]
●   4.4 Intenciones y Servicios [Gar10, cap7-8]
●   4.5 Acceso a Datos [Gar10, cap9]
    –   4.5.1 Base de datos [Gar10, cap9]


                             Acceso a Datos       3
Bibliografía
●   Libro de texto:
    – [Gar10] Learning Android, Marko Gargenta,
        O'Reilly, 2010, Cap 9-10. Disponible en
        http://ofps.oreilly.com/titles/9781449390501/
●   Android Developers
    –   http://developer.android.com/reference/android/app/Service.html
    –   http://developer.android.com/resources/tutorials/testing/helloandroid_test.html
    –   http://developer.android.com/guide/topics/testing/testing_android.html
    –   http://developer.android.com/resources/tutorials/testing/activity_test.html




                                                      Acceso a Datos                      4
Objetivos
●   Aprender a utilizar almacenamiento
    persistente
●   Recordar bases de datos y SQL
●    Aprender a crear tablas, y consultar,
    insertar y borrar datos en una tabla
●   Aprender a mostrar datos en una lista en
    una actividad


                             Acceso a Datos    5
Motivación
●   En el tema anterior teníamos un servicio
    que podía listar mensajes.
●   Queremos guardar los mensajes en una
    base de datos en el terminal para poder
    mostrar algo incluso aunque no haya
    conexión




                            Acceso a Datos     6
Base de Datos
●   Ya vimos en FTEL
    –   Que las Bases de Datos permitían guardar
        datos de forma persistente
    –   Que con SQL podíamos realizar diversas
        operaciones, como consultar (SELECT-
        FROM), modificar (UPDATE), borrar (DELETE)
        o insertar datos (INSERT)




                                Acceso a Datos       7
SQLite y Android




                     http://www.sqlite.org/




          Acceso a Datos                      8
SQLite
●   Utilizada internamente por Firefox y
    Thuderbird
●   Usada en múltiples sistemas operativos
    para dispositivos móviles (Android, iOS,
    Blackberry OS)
●   No tiene claves ajenas (FOREIGN KEYS)



                            Acceso a Datos     9
Repaso SQL – create table




    create table tblLIBROS (libroID integer PRIMARY KEY autoincrement,
                            titulo text,
                            autor text,
                            anno integer)

                                        Tipos: text, varchar, integer, float,
http://sqlite.org/datatype3.html         numeric, date, time, timestamp,
                                                boolean, blob, etc.
                                            Acceso a Datos                      10
Repaso SQL - insertar

insert into tblLIBROS(autor, titulo, anno) VALUES ('autor1', 'libro1', 2001);
insert into tblLIBROS(autor, titulo, anno) VALUES ('autor2', 'libro2', 2002);
insert into tblLIBROS(autor, titulo, anno) VALUES ('autor1', 'libro3', 2001);
insert into tblLIBROS(autor, titulo, anno) VALUES ('autor4', 'libro4', 2004);




                                           Acceso a Datos                       11
Consultar (select-from) /
             query (I)
●    select [distinct] <campos>
    from <tablas>
    where <condicion>
    group by <campos> having <grupos>
    order by <campos> [ASC|DESC];
●   Ej. listar todos los autores
               select distinct autor from tblLIBROS;

●   Ej. listar autor, titulo y año anterior a 2002
             select * from tblLIBROS where anno <= 2002;

                                     Acceso a Datos        12
Consultar (select-from) /
              query (II)
●   Ej. listar autor, titulo y año anterior a 2002
    ordenado por autor
       select * from tblLIBROS where anno <= 2002 ordered by autor;

●   Ej. listar cuántos autores hay por año
          select anno, count(*) from tblLIBROS grouped by anno;




                                        Acceso a Datos                13
En Android...
●   Usamos la clase SQLiteDatabase
●   Nos da dos interfaces:
    –   Ejecutar SQL
         •   execSQL(String sql) → CREATE, INSERT,
             UPDATE, DELETE
         •   rawQuery(String sql, String [] args) → SELECT
    –   Orientada a objetos (veremos)
         •   query(), delete(), insert(), update()


                                          Acceso a Datos     14
Ejemplo
SQLiteDatabase db = SQLiteDatabase.openOrCreate(“ejemplo.libros”,
                                                   MODE_PRIVATE, null);
String sql = "create table tblLIBROS ("
                      + "libroID integer PRIMARY KEY autoincrement, "
                      + "titulo text, "
                      + "autor text, "
                      + "anno integer"
                      + ");";
db.execSQL(sql);
String sqlInsert = "insert into tblLIBROS (autor, titulo, anno) VALUES
('autor1', 'libro1', 2001); ";
db.execSQL(sql);
String sqlSelect = "select distinct autor from tblLIBROS;";
Cursor c = db.rawQuery(sqlSelect, null);
int autorIdCol = c.getColumnIndex("autor");
while (c.moveToNext()) {
     Log.d(c.getString(autorIdCol));
}
                                           Acceso a Datos         Cursor   15
Base de datos en /data/data




               Acceso a Datos   16
Ejemplo SQL -
EjemploBaseDatosActivity




                           Llama a
                        onCreate() de
                          DBHelper




              Acceso a Datos            17
Ejemplo SQL DBHelper (I)




              Acceso a Datos   18
Ejemplo SQL DBHelper (II)




              Acceso a Datos   19
Ejemplo SQL DBHelper (III)




           int autorIdCol = c.getColumnIndex("autor");
           while (c.moveToNext()) {
                Log.d(c.getString(autorIdCol));
           }

                      Acceso a Datos                     20
Ejemplo SQL DBHelper (IV)




              Acceso a Datos   21
Consultas parametrizadas
●   Podemos usar sentencias SQL
    parametrizadas
●   Ej.
    String sql = “select * from tblLIBROS where anno >= ? and anno <= ?”;
    String [] args = {“2000”, “2004” };
    db.execSQL(sql, args);




                                              Acceso a Datos                22
SQLiteDatabase - query()

query(String tabla, String [] columnas,         select columnas from tabla
     String where, String [] whereArgs,         where selección
     String groupBy, String having,             group by columnas having condicion
     String orderBy);                           order by columnas

        String sql = “select nombre, apellidos, sueldo from Empleados “;
        sql += “where sueldo >= ? and sueldo <= ? ”;
        sql += “order by nombre, apellidos”;
        String [] args = {“1000”, “2000”};
        Cursor c = db.rawQuery(sql, args);

    String [] cols = {“nombre”, “apellidos”, “sueldo”};
    String where = “sueldo >= ? and sueldo <= ?”;
    String [] whereArgs = {“1000”, “2000”};
    String order = “nombre, apellidos”;
    Cursor c = db.query(“Empleados”, cols, where, whereArgs, null, null, order);

                                               Acceso a Datos                      23
SQLiteDatabase
                   delete(),insert()
public int delete(String tabla, String where, String [] whereArgs);
public long insert(String tabla, String nullColumnHack, ContentValues valores);

String sqlDelete = “delete from Empleados where nombre = 'Pepe'”;
db.execSQL(sqlDelete);

db.delete(“Empleados”,”nombre = 'Pepe'” , null);

String sqlInsert = “insert into Empleados values( 'Pepe', 'Perez', '1000');
db.execSQL(sqlInsert);

ContentValues valores = new ContentValues(); // Map<String, String>
valores.put(“nombre”, “Pepe”);
                                       SQL no permite insertar una columna null.
valores.put(“apellidos”, “Perez”);
                                          Si valores es null, debemos indicar al
Valores.put(“sueldo”, “1000”);
                                          menos el nombre de una columna que
db.insert(“Empleados”, null, valores);
                                       permite meter un valor NULL. No es válido
                                         INSERT INTO tabla. Hacemos INSERT
                                                Acceso a Datos                   24
                                            INTO tabla (col1) VALUES (null);
SQLiteDatabase - update()
public int update(String tabla, ContentValues valores, String where, String [] whereArgs);




  String sqlUpdate = “update Empleados set nombre = 'Jose' where nombre = 'Pepe'”;
  db.execSQL(sqlUpdate);


  ContentValues valores = new ContentValues(); // Map<String,String>
  valores.put(“nombre”, “Jose”);

  db.update(“Empleados”, valores, “nombre='Pepe'”, null);




                                                   Acceso a Datos                      25
Borrar la BD...
Settings → Applications




             Acceso a Datos   26
Ejemplo Yamba
●   Vamos a crear una BD para el timeline
    –   La encapsulamos en una clase StatusData




                               Acceso a Datos     27
Patrón de Diseño DAO
●   DAO (Data Access Object)
●   Un DAO contiene una conexión a una base
    de datos y sus operaciones básicas,
    ocultando su implementación
●   En nuestro caso, StatusData sigue el
    patrón DAO del valor Status de Twitter



                            Acceso a Datos    28
StatusData (I)




         Acceso a Datos   29
StatusData (II)




          Acceso a Datos   30
StatusData (III)




          Acceso a Datos   31
StatusData (IV)




         Acceso a Datos   32
YambaSingleton3 (I)




           Acceso a Datos   33
YambaSingleton3 (II)




            Acceso a Datos   34
YambaSingleton3 (III)




            Acceso a Datos   35
YambaSingleton3 (IV)




            Acceso a Datos   36
UpdaterService4 (I)




           Acceso a Datos   37
UpdaterService4 (II)




            Acceso a Datos   38
UpdaterService4 (III)




            Acceso a Datos   39
StatusActivity7 (I)
  (sin cambios)




            Acceso a Datos   40
StatusActivity7 (II)




            Acceso a Datos   41
StatusActivity7 (III)




             Acceso a Datos   42
StatusActivity7 (IV)




            Acceso a Datos   43
Lanzamos servicio...




            Acceso a Datos   44
Lo que llevamos hecho...




              Acceso a Datos   45
Yamba
● Vamos a mostrar los mensajes,
 recuperándolos de la base de datos
● Hacemos dos versiones
    –   Una simple, con una nueva actividad que
        muestre los mensajes
    –   Otra más avanzada usando Adaptadores




                                Acceso a Datos    46
Cambios en la aplicación
● Queremos que cuando empiece el usuario
 en vez de la pantalla de Status, empiece
 con la pantalla de Timeline
● Pero... queremos que en ambas
 actividades el usuario pueda acceder a las
 opciones




                         Acceso a Datos       47
BaseActivity

                - Movemos
                onCreateOptionsMenu() y
                onOptionsItemSelected()
                de StatusActivity a
                BaseActivity
                - Aprovechamos y
                cambiamos los dos
                botones start/stop service
                por uno (toggleService)
                que conmute




        Acceso a Datos                   48
res/values/strings.xml




             Acceso a Datos   49
res/values/menu/menu2.xml




              Acceso a Datos   50
BaseActivity
●   New->Java Class




                      Acceso a Datos   51
BaseActivity (I)




          Acceso a Datos   52
BaseActivity (II)




           Acceso a Datos   53
BaseActivity (III)




           Acceso a Datos   54
StatusActivity8 (I)




                      Sin gestionar el menú
                      (lo hereda), quitados
                     onCreateOptionsMenu y
                     onOptionsItemSelected




            Acceso a Datos                    55
StatusActivity8 (II)




            Acceso a Datos   56
StatusActivity8 (III)




             Acceso a Datos   57
Layout
res/layout/timeline_basic.xml
●   New->Android XML file




                            Acceso a Datos   58
Layout timeline_basic.xml




              Acceso a Datos   59
TimelineActivity1
●   New->Java Class




                      Acceso a Datos   60
TimelineActivity1 (I)




             Acceso a Datos   61
TimelineActivity1 (II)




             Acceso a Datos   62
AndroidManifest.xml




           Acceso a Datos   63
Ejecutamos... y menú




            Acceso a Datos   64
Segunda iteración
● El widget ScrollView puede funcionar, pero
 si hubiera muchos registros, sería muy
 ineficiente
● Vamos a user ListView
    –   Podríamos usar ListActivity como vimos con
        los intents, pero extendemos BaseActivity y
        ListActivity es aconsejable cuando sólo hay un
        widget ListView en la actividad y usamos un
        array


                                 Acceso a Datos          65
res/layout/timeline.xml




              Acceso a Datos   66
res/layout/row.xml




           Acceso a Datos   67
Adaptador
●   Conectan una vista con una fuente de
    datos




                           Acceso a Datos   68
SimpleCursorAdaptor
●   En Eclipse la clase SimpleCursorAdaptor
    nos permite adaptar una base de datos a
    una vista
    –   Debemos describir un registro (fila, en
        row.xml), los datos (el cursor) y la
        correspondencia entre datos y la vista




                                  Acceso a Datos   69
TimelineActivity2 (I)




             Acceso a Datos   70
TimelineActivity2 (II)




             Acceso a Datos   71
Actualizamos...
● AndroidManifest a TimelineActivity2
● BaseActivity a TimelineActivity2 en el
 switch




                           Acceso a Datos   72
Ejecutamos...




                 Se ve mal timestamp,
                  vamos a arreglarlo




        Acceso a Datos                  73
ViewBinder
● Es un pequeño detalle
● Inyectamos lógica de negocio que
 convierte una marca de tiempo (timestamp)
 en tiempo relativo




                        Acceso a Datos       74
TimelineActivity3 (I)




             Acceso a Datos   75
TimelineActivity3 (II)




             Acceso a Datos   76
TimelineActivity3 (III)




              Acceso a Datos   77
Ejecutamos...




        Acceso a Datos   78
Lo que llevamos hecho...




              Acceso a Datos   79
Resumen
●   En este tema hemos aprendido
    –   Cómo almacenar, consultar, borrar, insertar y
        actualizar bases de datos en Android
    –   Cómo manejar cursores de bases de datos
    –   Patrones de diseño como DAO o adaptador
    –   Cómo extender una actividad con funcionalidad
        común
    –   Cómo mostrar datos en una vista con scroll o un
        adaptador
    –   Buenas prácticas como refactorización
                                  Acceso a Datos          80
¿Preguntas?




       Acceso a Datos   81

More Related Content

What's hot

Creación de Bases de Datos en SQL Server
Creación de Bases de Datos en SQL ServerCreación de Bases de Datos en SQL Server
Creación de Bases de Datos en SQL ServerZeleneMorita
 
MySQL. Tutorial Básico
MySQL. Tutorial BásicoMySQL. Tutorial Básico
MySQL. Tutorial BásicoJosu Orbe
 
Microsoft sql server
Microsoft sql serverMicrosoft sql server
Microsoft sql serverDeisyVilchez
 
DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datosLuis Bando
 
Curso SQL-C# Basico
Curso SQL-C# BasicoCurso SQL-C# Basico
Curso SQL-C# BasicoserTI_MX
 
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6Julián Castiblanco
 
Bases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sqlBases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sqlFreddyRomana
 
Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Julián Castiblanco
 
Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]Eduardo Arriols Nuñez
 
Precentacion de sql visual
Precentacion de sql visualPrecentacion de sql visual
Precentacion de sql visualBryanChacon12
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ
 
Desarrollo android almacenamiento de datos
Desarrollo android    almacenamiento de datosDesarrollo android    almacenamiento de datos
Desarrollo android almacenamiento de datosFernando Cejas
 

What's hot (20)

54563910 curso-de-mysql
54563910 curso-de-mysql54563910 curso-de-mysql
54563910 curso-de-mysql
 
Base de datos
Base de datosBase de datos
Base de datos
 
Creación de Bases de Datos en SQL Server
Creación de Bases de Datos en SQL ServerCreación de Bases de Datos en SQL Server
Creación de Bases de Datos en SQL Server
 
Sql presentacion
Sql presentacionSql presentacion
Sql presentacion
 
MySQL. Tutorial Básico
MySQL. Tutorial BásicoMySQL. Tutorial Básico
MySQL. Tutorial Básico
 
Introduccion a SQL
Introduccion a SQL Introduccion a SQL
Introduccion a SQL
 
Fundamentos sql server2
Fundamentos sql server2Fundamentos sql server2
Fundamentos sql server2
 
Microsoft sql server
Microsoft sql serverMicrosoft sql server
Microsoft sql server
 
DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datos
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
Curso SQL-C# Basico
Curso SQL-C# BasicoCurso SQL-C# Basico
Curso SQL-C# Basico
 
Comandos ddl
Comandos ddlComandos ddl
Comandos ddl
 
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
 
Bases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sqlBases de datos módulo 3 el lenguaje sql
Bases de datos módulo 3 el lenguaje sql
 
Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2
 
Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]
 
Precentacion de sql visual
Precentacion de sql visualPrecentacion de sql visual
Precentacion de sql visual
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
 
SQL
SQLSQL
SQL
 
Desarrollo android almacenamiento de datos
Desarrollo android    almacenamiento de datosDesarrollo android    almacenamiento de datos
Desarrollo android almacenamiento de datos
 

Viewers also liked (9)

Portfolio
PortfolioPortfolio
Portfolio
 
Webquest
WebquestWebquest
Webquest
 
Ilalaxinfants
IlalaxinfantsIlalaxinfants
Ilalaxinfants
 
Formato dibujo
Formato dibujoFormato dibujo
Formato dibujo
 
cbem m3 tema 6.2.pdf
cbem m3 tema 6.2.pdfcbem m3 tema 6.2.pdf
cbem m3 tema 6.2.pdf
 
cbem m3 tema 7.9.pdf
cbem m3 tema 7.9.pdfcbem m3 tema 7.9.pdf
cbem m3 tema 7.9.pdf
 
Formato dibujo
Formato dibujoFormato dibujo
Formato dibujo
 
Medidas informacion
Medidas informacionMedidas informacion
Medidas informacion
 
Las-vanguardias-artisticas-del-siglo-xx-mario-de-micheli - Fragmento
Las-vanguardias-artisticas-del-siglo-xx-mario-de-micheli - FragmentoLas-vanguardias-artisticas-del-siglo-xx-mario-de-micheli - Fragmento
Las-vanguardias-artisticas-del-siglo-xx-mario-de-micheli - Fragmento
 

Similar to Tema 4 5_1_acceso_datos

Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sqlJulio Pari
 
Android 4.x: Unidad 07 BBDD SQLite
Android 4.x: Unidad 07 BBDD SQLiteAndroid 4.x: Unidad 07 BBDD SQLite
Android 4.x: Unidad 07 BBDD SQLiteDavid Vaquero
 
ManualPracticoSQL.pdf
ManualPracticoSQL.pdfManualPracticoSQL.pdf
ManualPracticoSQL.pdfJenny29068
 
Introducción a la geodatabase del SIOSE (II)
Introducción a la geodatabase del SIOSE (II)Introducción a la geodatabase del SIOSE (II)
Introducción a la geodatabase del SIOSE (II)Benito Zaragozí
 
Android DB por Cesar Cespedes
Android DB por Cesar CespedesAndroid DB por Cesar Cespedes
Android DB por Cesar CespedesLima GTUG
 
Sesión 12 -Diseño de BD_Ciclo_3.pptx
Sesión 12 -Diseño de BD_Ciclo_3.pptxSesión 12 -Diseño de BD_Ciclo_3.pptx
Sesión 12 -Diseño de BD_Ciclo_3.pptxJohn McClane
 
Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas  Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas Crhis
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQLAna Aguirre
 
Bd 2 1 fundamentos transact sql
Bd 2   1 fundamentos transact sqlBd 2   1 fundamentos transact sql
Bd 2 1 fundamentos transact sqlCarlos Lopez
 
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxOVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxMARGOTHLORENAMARTINE
 
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITEANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITErosacm chinguel maldonado
 

Similar to Tema 4 5_1_acceso_datos (20)

Conexion
ConexionConexion
Conexion
 
Sql android
Sql   androidSql   android
Sql android
 
Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)
 
Tsql
TsqlTsql
Tsql
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
 
Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)
 
Android 4.x: Unidad 07 BBDD SQLite
Android 4.x: Unidad 07 BBDD SQLiteAndroid 4.x: Unidad 07 BBDD SQLite
Android 4.x: Unidad 07 BBDD SQLite
 
ManualPracticoSQL.pdf
ManualPracticoSQL.pdfManualPracticoSQL.pdf
ManualPracticoSQL.pdf
 
Introducción a la geodatabase del SIOSE (II)
Introducción a la geodatabase del SIOSE (II)Introducción a la geodatabase del SIOSE (II)
Introducción a la geodatabase del SIOSE (II)
 
Android DB por Cesar Cespedes
Android DB por Cesar CespedesAndroid DB por Cesar Cespedes
Android DB por Cesar Cespedes
 
Intro BBDD SQL Server.pptx
Intro BBDD SQL Server.pptxIntro BBDD SQL Server.pptx
Intro BBDD SQL Server.pptx
 
Sesión 12 -Diseño de BD_Ciclo_3.pptx
Sesión 12 -Diseño de BD_Ciclo_3.pptxSesión 12 -Diseño de BD_Ciclo_3.pptx
Sesión 12 -Diseño de BD_Ciclo_3.pptx
 
Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas  Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 
Manual practico-sql
Manual practico-sqlManual practico-sql
Manual practico-sql
 
Bd 2 1 fundamentos transact sql
Bd 2   1 fundamentos transact sqlBd 2   1 fundamentos transact sql
Bd 2 1 fundamentos transact sql
 
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxOVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
 
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITEANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
ANDROID CON CONEXIÓN A BASE DE DATOS SQLITE
 

More from Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Tema 4.8 Preferencias
Tema 4.8 PreferenciasTema 4.8 Preferencias
Tema 4.8 Preferencias
 

Recently uploaded

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 

Recently uploaded (16)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 

Tema 4 5_1_acceso_datos

  • 1. Análisis y Diseño de Software Tema 4.5.1 Acceso a Datos Base de Datos Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es
  • 2. Leyenda Teoría Ejercicio práctico en el ordenador Ampliación de conocimientos Lectura / Vídeo / Podcast Práctica libre / Experimentación Acceso a Datos 2
  • 3. Temario ● 4.1 Introducción a Android [Gar10, cap1-2 ] ● 4.2 Desarrollo con Android [Gar10, cap3-5] ● 4.3 Interfaces de Usuario [Gar10, cap6] ● 4.4 Intenciones y Servicios [Gar10, cap7-8] ● 4.5 Acceso a Datos [Gar10, cap9] – 4.5.1 Base de datos [Gar10, cap9] Acceso a Datos 3
  • 4. Bibliografía ● Libro de texto: – [Gar10] Learning Android, Marko Gargenta, O'Reilly, 2010, Cap 9-10. Disponible en http://ofps.oreilly.com/titles/9781449390501/ ● Android Developers – http://developer.android.com/reference/android/app/Service.html – http://developer.android.com/resources/tutorials/testing/helloandroid_test.html – http://developer.android.com/guide/topics/testing/testing_android.html – http://developer.android.com/resources/tutorials/testing/activity_test.html Acceso a Datos 4
  • 5. Objetivos ● Aprender a utilizar almacenamiento persistente ● Recordar bases de datos y SQL ● Aprender a crear tablas, y consultar, insertar y borrar datos en una tabla ● Aprender a mostrar datos en una lista en una actividad Acceso a Datos 5
  • 6. Motivación ● En el tema anterior teníamos un servicio que podía listar mensajes. ● Queremos guardar los mensajes en una base de datos en el terminal para poder mostrar algo incluso aunque no haya conexión Acceso a Datos 6
  • 7. Base de Datos ● Ya vimos en FTEL – Que las Bases de Datos permitían guardar datos de forma persistente – Que con SQL podíamos realizar diversas operaciones, como consultar (SELECT- FROM), modificar (UPDATE), borrar (DELETE) o insertar datos (INSERT) Acceso a Datos 7
  • 8. SQLite y Android http://www.sqlite.org/ Acceso a Datos 8
  • 9. SQLite ● Utilizada internamente por Firefox y Thuderbird ● Usada en múltiples sistemas operativos para dispositivos móviles (Android, iOS, Blackberry OS) ● No tiene claves ajenas (FOREIGN KEYS) Acceso a Datos 9
  • 10. Repaso SQL – create table create table tblLIBROS (libroID integer PRIMARY KEY autoincrement, titulo text, autor text, anno integer) Tipos: text, varchar, integer, float, http://sqlite.org/datatype3.html numeric, date, time, timestamp, boolean, blob, etc. Acceso a Datos 10
  • 11. Repaso SQL - insertar insert into tblLIBROS(autor, titulo, anno) VALUES ('autor1', 'libro1', 2001); insert into tblLIBROS(autor, titulo, anno) VALUES ('autor2', 'libro2', 2002); insert into tblLIBROS(autor, titulo, anno) VALUES ('autor1', 'libro3', 2001); insert into tblLIBROS(autor, titulo, anno) VALUES ('autor4', 'libro4', 2004); Acceso a Datos 11
  • 12. Consultar (select-from) / query (I) ● select [distinct] <campos> from <tablas> where <condicion> group by <campos> having <grupos> order by <campos> [ASC|DESC]; ● Ej. listar todos los autores select distinct autor from tblLIBROS; ● Ej. listar autor, titulo y año anterior a 2002 select * from tblLIBROS where anno <= 2002; Acceso a Datos 12
  • 13. Consultar (select-from) / query (II) ● Ej. listar autor, titulo y año anterior a 2002 ordenado por autor select * from tblLIBROS where anno <= 2002 ordered by autor; ● Ej. listar cuántos autores hay por año select anno, count(*) from tblLIBROS grouped by anno; Acceso a Datos 13
  • 14. En Android... ● Usamos la clase SQLiteDatabase ● Nos da dos interfaces: – Ejecutar SQL • execSQL(String sql) → CREATE, INSERT, UPDATE, DELETE • rawQuery(String sql, String [] args) → SELECT – Orientada a objetos (veremos) • query(), delete(), insert(), update() Acceso a Datos 14
  • 15. Ejemplo SQLiteDatabase db = SQLiteDatabase.openOrCreate(“ejemplo.libros”, MODE_PRIVATE, null); String sql = "create table tblLIBROS (" + "libroID integer PRIMARY KEY autoincrement, " + "titulo text, " + "autor text, " + "anno integer" + ");"; db.execSQL(sql); String sqlInsert = "insert into tblLIBROS (autor, titulo, anno) VALUES ('autor1', 'libro1', 2001); "; db.execSQL(sql); String sqlSelect = "select distinct autor from tblLIBROS;"; Cursor c = db.rawQuery(sqlSelect, null); int autorIdCol = c.getColumnIndex("autor"); while (c.moveToNext()) { Log.d(c.getString(autorIdCol)); } Acceso a Datos Cursor 15
  • 16. Base de datos en /data/data Acceso a Datos 16
  • 17. Ejemplo SQL - EjemploBaseDatosActivity Llama a onCreate() de DBHelper Acceso a Datos 17
  • 18. Ejemplo SQL DBHelper (I) Acceso a Datos 18
  • 19. Ejemplo SQL DBHelper (II) Acceso a Datos 19
  • 20. Ejemplo SQL DBHelper (III) int autorIdCol = c.getColumnIndex("autor"); while (c.moveToNext()) { Log.d(c.getString(autorIdCol)); } Acceso a Datos 20
  • 21. Ejemplo SQL DBHelper (IV) Acceso a Datos 21
  • 22. Consultas parametrizadas ● Podemos usar sentencias SQL parametrizadas ● Ej. String sql = “select * from tblLIBROS where anno >= ? and anno <= ?”; String [] args = {“2000”, “2004” }; db.execSQL(sql, args); Acceso a Datos 22
  • 23. SQLiteDatabase - query() query(String tabla, String [] columnas, select columnas from tabla String where, String [] whereArgs, where selección String groupBy, String having, group by columnas having condicion String orderBy); order by columnas String sql = “select nombre, apellidos, sueldo from Empleados “; sql += “where sueldo >= ? and sueldo <= ? ”; sql += “order by nombre, apellidos”; String [] args = {“1000”, “2000”}; Cursor c = db.rawQuery(sql, args); String [] cols = {“nombre”, “apellidos”, “sueldo”}; String where = “sueldo >= ? and sueldo <= ?”; String [] whereArgs = {“1000”, “2000”}; String order = “nombre, apellidos”; Cursor c = db.query(“Empleados”, cols, where, whereArgs, null, null, order); Acceso a Datos 23
  • 24. SQLiteDatabase delete(),insert() public int delete(String tabla, String where, String [] whereArgs); public long insert(String tabla, String nullColumnHack, ContentValues valores); String sqlDelete = “delete from Empleados where nombre = 'Pepe'”; db.execSQL(sqlDelete); db.delete(“Empleados”,”nombre = 'Pepe'” , null); String sqlInsert = “insert into Empleados values( 'Pepe', 'Perez', '1000'); db.execSQL(sqlInsert); ContentValues valores = new ContentValues(); // Map<String, String> valores.put(“nombre”, “Pepe”); SQL no permite insertar una columna null. valores.put(“apellidos”, “Perez”); Si valores es null, debemos indicar al Valores.put(“sueldo”, “1000”); menos el nombre de una columna que db.insert(“Empleados”, null, valores); permite meter un valor NULL. No es válido INSERT INTO tabla. Hacemos INSERT Acceso a Datos 24 INTO tabla (col1) VALUES (null);
  • 25. SQLiteDatabase - update() public int update(String tabla, ContentValues valores, String where, String [] whereArgs); String sqlUpdate = “update Empleados set nombre = 'Jose' where nombre = 'Pepe'”; db.execSQL(sqlUpdate); ContentValues valores = new ContentValues(); // Map<String,String> valores.put(“nombre”, “Jose”); db.update(“Empleados”, valores, “nombre='Pepe'”, null); Acceso a Datos 25
  • 26. Borrar la BD... Settings → Applications Acceso a Datos 26
  • 27. Ejemplo Yamba ● Vamos a crear una BD para el timeline – La encapsulamos en una clase StatusData Acceso a Datos 27
  • 28. Patrón de Diseño DAO ● DAO (Data Access Object) ● Un DAO contiene una conexión a una base de datos y sus operaciones básicas, ocultando su implementación ● En nuestro caso, StatusData sigue el patrón DAO del valor Status de Twitter Acceso a Datos 28
  • 29. StatusData (I) Acceso a Datos 29
  • 30. StatusData (II) Acceso a Datos 30
  • 31. StatusData (III) Acceso a Datos 31
  • 32. StatusData (IV) Acceso a Datos 32
  • 33. YambaSingleton3 (I) Acceso a Datos 33
  • 34. YambaSingleton3 (II) Acceso a Datos 34
  • 35. YambaSingleton3 (III) Acceso a Datos 35
  • 36. YambaSingleton3 (IV) Acceso a Datos 36
  • 37. UpdaterService4 (I) Acceso a Datos 37
  • 38. UpdaterService4 (II) Acceso a Datos 38
  • 39. UpdaterService4 (III) Acceso a Datos 39
  • 40. StatusActivity7 (I) (sin cambios) Acceso a Datos 40
  • 41. StatusActivity7 (II) Acceso a Datos 41
  • 42. StatusActivity7 (III) Acceso a Datos 42
  • 43. StatusActivity7 (IV) Acceso a Datos 43
  • 44. Lanzamos servicio... Acceso a Datos 44
  • 45. Lo que llevamos hecho... Acceso a Datos 45
  • 46. Yamba ● Vamos a mostrar los mensajes, recuperándolos de la base de datos ● Hacemos dos versiones – Una simple, con una nueva actividad que muestre los mensajes – Otra más avanzada usando Adaptadores Acceso a Datos 46
  • 47. Cambios en la aplicación ● Queremos que cuando empiece el usuario en vez de la pantalla de Status, empiece con la pantalla de Timeline ● Pero... queremos que en ambas actividades el usuario pueda acceder a las opciones Acceso a Datos 47
  • 48. BaseActivity - Movemos onCreateOptionsMenu() y onOptionsItemSelected() de StatusActivity a BaseActivity - Aprovechamos y cambiamos los dos botones start/stop service por uno (toggleService) que conmute Acceso a Datos 48
  • 49. res/values/strings.xml Acceso a Datos 49
  • 50. res/values/menu/menu2.xml Acceso a Datos 50
  • 51. BaseActivity ● New->Java Class Acceso a Datos 51
  • 52. BaseActivity (I) Acceso a Datos 52
  • 53. BaseActivity (II) Acceso a Datos 53
  • 54. BaseActivity (III) Acceso a Datos 54
  • 55. StatusActivity8 (I) Sin gestionar el menú (lo hereda), quitados onCreateOptionsMenu y onOptionsItemSelected Acceso a Datos 55
  • 56. StatusActivity8 (II) Acceso a Datos 56
  • 57. StatusActivity8 (III) Acceso a Datos 57
  • 58. Layout res/layout/timeline_basic.xml ● New->Android XML file Acceso a Datos 58
  • 59. Layout timeline_basic.xml Acceso a Datos 59
  • 60. TimelineActivity1 ● New->Java Class Acceso a Datos 60
  • 61. TimelineActivity1 (I) Acceso a Datos 61
  • 62. TimelineActivity1 (II) Acceso a Datos 62
  • 63. AndroidManifest.xml Acceso a Datos 63
  • 64. Ejecutamos... y menú Acceso a Datos 64
  • 65. Segunda iteración ● El widget ScrollView puede funcionar, pero si hubiera muchos registros, sería muy ineficiente ● Vamos a user ListView – Podríamos usar ListActivity como vimos con los intents, pero extendemos BaseActivity y ListActivity es aconsejable cuando sólo hay un widget ListView en la actividad y usamos un array Acceso a Datos 65
  • 66. res/layout/timeline.xml Acceso a Datos 66
  • 67. res/layout/row.xml Acceso a Datos 67
  • 68. Adaptador ● Conectan una vista con una fuente de datos Acceso a Datos 68
  • 69. SimpleCursorAdaptor ● En Eclipse la clase SimpleCursorAdaptor nos permite adaptar una base de datos a una vista – Debemos describir un registro (fila, en row.xml), los datos (el cursor) y la correspondencia entre datos y la vista Acceso a Datos 69
  • 70. TimelineActivity2 (I) Acceso a Datos 70
  • 71. TimelineActivity2 (II) Acceso a Datos 71
  • 72. Actualizamos... ● AndroidManifest a TimelineActivity2 ● BaseActivity a TimelineActivity2 en el switch Acceso a Datos 72
  • 73. Ejecutamos... Se ve mal timestamp, vamos a arreglarlo Acceso a Datos 73
  • 74. ViewBinder ● Es un pequeño detalle ● Inyectamos lógica de negocio que convierte una marca de tiempo (timestamp) en tiempo relativo Acceso a Datos 74
  • 75. TimelineActivity3 (I) Acceso a Datos 75
  • 76. TimelineActivity3 (II) Acceso a Datos 76
  • 77. TimelineActivity3 (III) Acceso a Datos 77
  • 78. Ejecutamos... Acceso a Datos 78
  • 79. Lo que llevamos hecho... Acceso a Datos 79
  • 80. Resumen ● En este tema hemos aprendido – Cómo almacenar, consultar, borrar, insertar y actualizar bases de datos en Android – Cómo manejar cursores de bases de datos – Patrones de diseño como DAO o adaptador – Cómo extender una actividad con funcionalidad común – Cómo mostrar datos en una vista con scroll o un adaptador – Buenas prácticas como refactorización Acceso a Datos 80
  • 81. ¿Preguntas? Acceso a Datos 81