SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Downloaden Sie, um offline zu lesen
Universidad Tecnológica del Estado de Zacatecas
Unidad Académica de Pinos
APLICACIÓN EN ANDROID
DESARROLLO DE APLICACIONES II
ELOY CONTRETAS DELIRA
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
MÓNICA DE LOS ÁNGELES RAMÍREZ MORENO
5CUATRIMESTRE “A”
21/marzo/14
El siguiente código nos muestra la parte que vamos a ejecutar va a introducir modificar y
eliminar los datos que el usuario nos proporcionara.
MainActivity.java
import android.app
public class MainActivity extends.Activity;
import android.os.Bundle;
Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DataBaseManager manager = new DataBaseManager(this);
/*ejemplos*/
manager.insertar("Jaime","11111111111");
manager.insertar2("Juan","222222222");
manager.insertar("Ana","3333333");
manager.eliminar("juan");
manager.modificarTelefono("Ana","55555555");
}
}
El siguiente código nos muestra la clase que vamos a utilizar para mandar a llamar la
clase o la base de datos que está disponible en la carpeta del mismo proyecto-
DbHelper.java
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DbHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "contactos.sqlite";
private static final int DB_SCHEME_VERSION = 1;
public DbHelper(Context context) {
super(context, DB_NAME, null, DB_SCHEME_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DataBaseManager.CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
El siguiente codigo nos muestra la base de datos que vamos a ocupar para guardar
modificar eliminar y consultar los datos ya introducido.
DataBaseManager.java
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class DataBaseManager {
public static final String TABLE_NAME = "contactos";
public static final String CN_ID = "_id";
public static final String CN_NAME = "nombre";
public static final String CN_PHONE = "telefono";
public static final String CREATE_TABLE = "create table " +TABLE_NAME+ " ("
+ CN_ID + " integer primary key autoincrement,"
+ CN_NAME + " text not null,"
+ CN_PHONE + " text);";
private DbHelper helper;
private SQLiteDatabase db;
public DataBaseManager(Context context) {
helper = new DbHelper(context);
db = helper.getWritableDatabase();
}
private ContentValues generarContentValues(String nombre, String telefono) {
ContentValues valores = new ContentValues();
valores.put(CN_NAME, nombre);
valores.put(CN_PHONE, telefono);
return valores;
}
public void insertar(String nombre, String telefono) {
//bd.insert(TABLA, NullColumnHack, ContentValues);
db.insert(TABLE_NAME, null, generarContentValues(nombre,telefono) );
}
public void insertar2(String nombre, String telefono) {
//INSERT INTO contactos VALUES (null,'paco',9999)
db.execSQL("insert into "+TABLE_NAME+" values (null,'"+nombre+"',"+telefono+")");
}
public void eliminar(String nombre) {
//bd.delete (Tabla, Claúsula Where, Argumentos Where)
db.delete(TABLE_NAME, CN_NAME + "=?", new String[]{nombre});
}
public void eliminarMultiple(String nom1, String nom2) {
db.delete(TABLE_NAME, CN_NAME + "IN (?,?)", new String[]{nom1,nom2});
}
public void modificarTelefono(String nombre, String nuevoTelefono) {
/*bd.update(TABLA, ContentValues, Clausula Where, Argumentos Where)*/
db.update(TABLE_NAME, generarContentValues(nombre, nuevoTelefono),
CN_NAME + "=?", new String[]{nombre});
}
}
Para hacer una consulta a la base de datos y que nos devuelva valores, tenemos
dos opciones, una utilizar el métodorawQuery("Select...") donde escribiremos la consulta
en lenguaje SQL.
La segunda forma y es la que veremos aquí es con el método query que nos proporciona
android.
El método query tiene la siguiente estructura:
query (String table, String[] columns, String selection, String[] selectionArgs, String
groupBy, String having, String orderBy)
Nota Mental: si usas SimpleCursoAdapter para mostrar datos, este adaptador requiere la
columna _id.
Continuando con el tutorial anterior añadiremos el siguiente método a la clase
DataBaseManager.java
public Cursor cargarCursorContactos() {
String[] columnas = new String[]{CN_ID, CN_NAME,CN_PHONE};
return db.query(TABLE_NAME, columnas, null, null, null, null, null);
}
Este método cargarCursoContactos() nos devuelve todos los contactos que tengamos en
la base de datos.
Esto puede suponer una operación muy costosa tanto en memoria como en la operación
de lectura si tratásemos con una gran cantidad de datos, y además puede darnos en ese
caso un ANR o Application Not Responding, donde al usuario le mostrará un mensaje con
la opción de Esperar ( a que termine de realizar la consulta) o Forzar Cierre ( y esto no lo
queremos).
Para evitar un ANR, basta con trabajar en segundo plano, pero tendrás que esperar al
siguiente tutorial para ver un ejemplo :)
Para buscar un contacto por el nombre, utilizaremos el siguiente método:
public Cursor buscarContacto(String nombre) {
String[] columnas = new String[]{CN_ID,CN_NAME,CN_PHONE};
return db.query(TABLE_NAME,columnas,CN_NAME + "=?",new
String[]{nombre},null,null,null);
}

Weitere ähnliche Inhalte

Was ist angesagt?

Practica 02-taller-de-programacion-121226180145-phpapp02
Practica 02-taller-de-programacion-121226180145-phpapp02Practica 02-taller-de-programacion-121226180145-phpapp02
Practica 02-taller-de-programacion-121226180145-phpapp02
Flor Santana Mota
 

Was ist angesagt? (19)

Hack x crack_sq_linjection
Hack x crack_sq_linjectionHack x crack_sq_linjection
Hack x crack_sq_linjection
 
Cómo hacer una calculadora en java y visual basic
Cómo hacer una calculadora en java y visual basicCómo hacer una calculadora en java y visual basic
Cómo hacer una calculadora en java y visual basic
 
ESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADASESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADAS
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
Acmar trucos de visual basic(2)
Acmar   trucos de visual basic(2)Acmar   trucos de visual basic(2)
Acmar trucos de visual basic(2)
 
Conexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeansConexion sql server 2005 java netbeans
Conexion sql server 2005 java netbeans
 
Semana 6 Módulos en Python Entrega 1
Semana 6   Módulos en Python Entrega 1Semana 6   Módulos en Python Entrega 1
Semana 6 Módulos en Python Entrega 1
 
Buenas
BuenasBuenas
Buenas
 
Mp mardoqueo informe tecnico tap
Mp mardoqueo informe tecnico tapMp mardoqueo informe tecnico tap
Mp mardoqueo informe tecnico tap
 
Como hacer una calculadora en java
Como hacer una calculadora en javaComo hacer una calculadora en java
Como hacer una calculadora en java
 
Ejemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportEjemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper report
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Métodos
MétodosMétodos
Métodos
 
Consultas
ConsultasConsultas
Consultas
 
7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona
 
Estructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónEstructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la Programación
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje
 
2.0 empleado
2.0 empleado2.0 empleado
2.0 empleado
 
Practica 02-taller-de-programacion-121226180145-phpapp02
Practica 02-taller-de-programacion-121226180145-phpapp02Practica 02-taller-de-programacion-121226180145-phpapp02
Practica 02-taller-de-programacion-121226180145-phpapp02
 

Andere mochten auch (14)

Magazine advertisment poster
Magazine advertisment posterMagazine advertisment poster
Magazine advertisment poster
 
Spa II Sep. 26
Spa II Sep. 26Spa II Sep. 26
Spa II Sep. 26
 
Cafe Dengue
Cafe  DengueCafe  Dengue
Cafe Dengue
 
અમર બલિદાન
અમર બલિદાન અમર બલિદાન
અમર બલિદાન
 
Christmas mateus
Christmas mateusChristmas mateus
Christmas mateus
 
03 cinemática en una dimensión
03 cinemática en una dimensión03 cinemática en una dimensión
03 cinemática en una dimensión
 
Genetica conceitos basicos
Genetica conceitos  basicosGenetica conceitos  basicos
Genetica conceitos basicos
 
Sergir Room
Sergir RoomSergir Room
Sergir Room
 
Monetizing the Web
Monetizing the WebMonetizing the Web
Monetizing the Web
 
Ira Goldstein's CRA Presentation
Ira Goldstein's CRA PresentationIra Goldstein's CRA Presentation
Ira Goldstein's CRA Presentation
 
Sedew 2
Sedew 2Sedew 2
Sedew 2
 
Dadadada
DadadadaDadadada
Dadadada
 
PER. IND. CRISTOFANON ANDREA - Presentazione Aziendale
PER. IND. CRISTOFANON ANDREA - Presentazione AziendalePER. IND. CRISTOFANON ANDREA - Presentazione Aziendale
PER. IND. CRISTOFANON ANDREA - Presentazione Aziendale
 
Reglamento estudiantil upc
Reglamento estudiantil upcReglamento estudiantil upc
Reglamento estudiantil upc
 

Ähnlich wie Aplication

UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
Videoconferencias UTPL
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacion
johanadoria
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
jubacalo
 
Avance proyecto integrador i
Avance proyecto integrador iAvance proyecto integrador i
Avance proyecto integrador i
Santiago Forland
 
Aplicación móvil con acceso a datos
Aplicación móvil con acceso a datosAplicación móvil con acceso a datos
Aplicación móvil con acceso a datos
Susi Perez Gallegos
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysql
I LG
 

Ähnlich wie Aplication (20)

Carlos eduardo, documento de aplicacion en android
Carlos eduardo, documento de aplicacion en androidCarlos eduardo, documento de aplicacion en android
Carlos eduardo, documento de aplicacion en android
 
Documento de eloy
Documento de eloyDocumento de eloy
Documento de eloy
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacion
 
Manual tecnico
Manual tecnicoManual tecnico
Manual tecnico
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Aplicación móvil
Aplicación móvilAplicación móvil
Aplicación móvil
 
Avance proyecto integrador i
Avance proyecto integrador iAvance proyecto integrador i
Avance proyecto integrador i
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBC
 
Aplicación móvil con acceso a datos
Aplicación móvil con acceso a datosAplicación móvil con acceso a datos
Aplicación móvil con acceso a datos
 
Agenda con SQLite
Agenda con SQLiteAgenda con SQLite
Agenda con SQLite
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysql
 
Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)
 
Practica9 bases de datos
Practica9 bases de datosPractica9 bases de datos
Practica9 bases de datos
 
Practica9 bases de datos
Practica9 bases de datosPractica9 bases de datos
Practica9 bases de datos
 
Desarrollo android almacenamiento de datos
Desarrollo android    almacenamiento de datosDesarrollo android    almacenamiento de datos
Desarrollo android almacenamiento de datos
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 

Mehr von wouyrmz (16)

Interfaces
InterfacesInterfaces
Interfaces
 
Abstraccion
AbstraccionAbstraccion
Abstraccion
 
Abstraccion
AbstraccionAbstraccion
Abstraccion
 
Polimorfismo resumen
Polimorfismo resumenPolimorfismo resumen
Polimorfismo resumen
 
Normativilidad en telecomunicaciones
Normativilidad en telecomunicacionesNormativilidad en telecomunicaciones
Normativilidad en telecomunicaciones
 
Manual de radio
Manual de radioManual de radio
Manual de radio
 
Antenas aplicaciones telecomunicaciones
Antenas aplicaciones telecomunicacionesAntenas aplicaciones telecomunicaciones
Antenas aplicaciones telecomunicaciones
 
Normas
NormasNormas
Normas
 
Tarbajo final
Tarbajo finalTarbajo final
Tarbajo final
 
Tarbajo final
Tarbajo finalTarbajo final
Tarbajo final
 
Elaboracion de una bd con dreawever
Elaboracion de una bd con dreaweverElaboracion de una bd con dreawever
Elaboracion de una bd con dreawever
 
Registros wouy
Registros wouyRegistros wouy
Registros wouy
 
Registros en php
Registros en phpRegistros en php
Registros en php
 
5 cosas
5 cosas5 cosas
5 cosas
 
Tabla comparativa de paradigma de la poo y programacion estructurada
Tabla comparativa de paradigma de la poo y programacion estructuradaTabla comparativa de paradigma de la poo y programacion estructurada
Tabla comparativa de paradigma de la poo y programacion estructurada
 
Tabla comparativa de paradigma de la poo y programacion estructurada
Tabla comparativa de paradigma de la poo y programacion estructuradaTabla comparativa de paradigma de la poo y programacion estructurada
Tabla comparativa de paradigma de la poo y programacion estructurada
 

Kürzlich hochgeladen

2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 

Kürzlich hochgeladen (20)

Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 

Aplication

  • 1. Universidad Tecnológica del Estado de Zacatecas Unidad Académica de Pinos APLICACIÓN EN ANDROID DESARROLLO DE APLICACIONES II ELOY CONTRETAS DELIRA TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN MÓNICA DE LOS ÁNGELES RAMÍREZ MORENO 5CUATRIMESTRE “A” 21/marzo/14
  • 2. El siguiente código nos muestra la parte que vamos a ejecutar va a introducir modificar y eliminar los datos que el usuario nos proporcionara. MainActivity.java import android.app public class MainActivity extends.Activity; import android.os.Bundle; Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DataBaseManager manager = new DataBaseManager(this); /*ejemplos*/ manager.insertar("Jaime","11111111111"); manager.insertar2("Juan","222222222"); manager.insertar("Ana","3333333"); manager.eliminar("juan"); manager.modificarTelefono("Ana","55555555"); } } El siguiente código nos muestra la clase que vamos a utilizar para mandar a llamar la clase o la base de datos que está disponible en la carpeta del mismo proyecto- DbHelper.java
  • 3. import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DbHelper extends SQLiteOpenHelper { private static final String DB_NAME = "contactos.sqlite"; private static final int DB_SCHEME_VERSION = 1; public DbHelper(Context context) { super(context, DB_NAME, null, DB_SCHEME_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DataBaseManager.CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } El siguiente codigo nos muestra la base de datos que vamos a ocupar para guardar modificar eliminar y consultar los datos ya introducido. DataBaseManager.java import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase;
  • 4. public class DataBaseManager { public static final String TABLE_NAME = "contactos"; public static final String CN_ID = "_id"; public static final String CN_NAME = "nombre"; public static final String CN_PHONE = "telefono"; public static final String CREATE_TABLE = "create table " +TABLE_NAME+ " (" + CN_ID + " integer primary key autoincrement," + CN_NAME + " text not null," + CN_PHONE + " text);"; private DbHelper helper; private SQLiteDatabase db; public DataBaseManager(Context context) { helper = new DbHelper(context); db = helper.getWritableDatabase(); } private ContentValues generarContentValues(String nombre, String telefono) { ContentValues valores = new ContentValues(); valores.put(CN_NAME, nombre); valores.put(CN_PHONE, telefono); return valores; } public void insertar(String nombre, String telefono) { //bd.insert(TABLA, NullColumnHack, ContentValues);
  • 5. db.insert(TABLE_NAME, null, generarContentValues(nombre,telefono) ); } public void insertar2(String nombre, String telefono) { //INSERT INTO contactos VALUES (null,'paco',9999) db.execSQL("insert into "+TABLE_NAME+" values (null,'"+nombre+"',"+telefono+")"); } public void eliminar(String nombre) { //bd.delete (Tabla, Claúsula Where, Argumentos Where) db.delete(TABLE_NAME, CN_NAME + "=?", new String[]{nombre}); } public void eliminarMultiple(String nom1, String nom2) { db.delete(TABLE_NAME, CN_NAME + "IN (?,?)", new String[]{nom1,nom2}); } public void modificarTelefono(String nombre, String nuevoTelefono) { /*bd.update(TABLA, ContentValues, Clausula Where, Argumentos Where)*/ db.update(TABLE_NAME, generarContentValues(nombre, nuevoTelefono), CN_NAME + "=?", new String[]{nombre}); } } Para hacer una consulta a la base de datos y que nos devuelva valores, tenemos dos opciones, una utilizar el métodorawQuery("Select...") donde escribiremos la consulta en lenguaje SQL. La segunda forma y es la que veremos aquí es con el método query que nos proporciona android.
  • 6. El método query tiene la siguiente estructura: query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) Nota Mental: si usas SimpleCursoAdapter para mostrar datos, este adaptador requiere la columna _id. Continuando con el tutorial anterior añadiremos el siguiente método a la clase DataBaseManager.java public Cursor cargarCursorContactos() { String[] columnas = new String[]{CN_ID, CN_NAME,CN_PHONE}; return db.query(TABLE_NAME, columnas, null, null, null, null, null); } Este método cargarCursoContactos() nos devuelve todos los contactos que tengamos en la base de datos. Esto puede suponer una operación muy costosa tanto en memoria como en la operación de lectura si tratásemos con una gran cantidad de datos, y además puede darnos en ese caso un ANR o Application Not Responding, donde al usuario le mostrará un mensaje con la opción de Esperar ( a que termine de realizar la consulta) o Forzar Cierre ( y esto no lo queremos). Para evitar un ANR, basta con trabajar en segundo plano, pero tendrás que esperar al siguiente tutorial para ver un ejemplo :) Para buscar un contacto por el nombre, utilizaremos el siguiente método:
  • 7. public Cursor buscarContacto(String nombre) { String[] columnas = new String[]{CN_ID,CN_NAME,CN_PHONE}; return db.query(TABLE_NAME,columnas,CN_NAME + "=?",new String[]{nombre},null,null,null); }