Colección de citas famosas - Slogan de motivación - Uso de la base de datos SQLite en el desarrollo de Android

Uso de la base de datos SQLite en el desarrollo de Android

SQPte es una base de datos integrada muy popular que admite el lenguaje SQL y tiene un buen rendimiento utilizando sólo una pequeña cantidad de memoria. Además, es de código abierto y cualquiera puede usarlo. Muchos proyectos de código abierto ((Mozilla, PHP, Python) utilizan SQPte.

SQPte consta de los siguientes componentes: compilador SQL, kernel, backend y complementos. SQPte funciona aprovechando máquinas virtuales y bases de datos virtuales. Engine (VDBE), que facilita la depuración, modificación y extensión del kernel SQPte.

SQPte básicamente cumple con el estándar SQL-92 y no se diferencia de otras bases de datos SQL importantes. eficiente El entorno de ejecución de Android contiene un SQPte completo

La mayor diferencia entre SQPte y otras bases de datos es la compatibilidad con tipos de datos. Al crear una tabla, puede especificar el tipo de datos de una columna en CREATE TABLE. declaración, pero puede colocar cualquier tipo de datos en cualquier columna. Cuando se inserta un valor en la base de datos, SQPte verificará su tipo. Si el tipo no coincide con la columna asociada, SQPte intentará convertir el valor al tipo de columna. Si no se puede convertir, el valor se almacenará como su propio tipo. Por ejemplo, puede colocar una cadena en una columna INTEGER. Además, SQPte no admite algunas funciones SQL estándar. restricciones de clave externa (restricciones de CLAVE EXTRANJERA), transacciones anidadas y RIGHT OUTER JOIN y FPL OUTER JOIN, así como algunas funciones ALTER TABLE

Además de las funciones anteriores, SQPte es un sistema SQL completo con funciones completas. activadores, transacciones, etc.

Android integra la base de datos SQPte en tiempo de ejecución) integra SQPte, por lo que todas las aplicaciones de Android pueden usar la base de datos SQPte. Para los desarrolladores que están familiarizados con SQL, usar SQPte en el desarrollo de Android es una opción. Es bastante simple, pero debido a que JDBC consume demasiados recursos del sistema, JDBC no es adecuado para desarrolladores. No es adecuado para dispositivos con memoria limitada, como teléfonos móviles. Por lo tanto, Android proporciona algunas API nuevas para usar bases de datos SQPte. los programadores deben aprender a usar estas API.

La base de datos se almacena en data./Carpeta de proyecto/bases de datos/.

Uso de la base de datos SQPte en el desarrollo de Android

Las actividades pueden acceder a una base de datos a través del Proveedor de contenido o Servicio. A continuación se explicará en detalle cómo crear una base de datos, agregar datos y consultar la base de datos.

Crear una base de datos

Android no proporciona una base de datos automáticamente. Para usar SQPte en una aplicación de Android, debe crear la base de datos usted mismo, luego crear tablas, índices y completar los datos. Android proporciona SQPteOpenHelper para ayudarlo a crear una base de datos. Puede crear fácilmente una base de datos heredando la clase SQPteOpenHelper. La clase SQPteOpenHelper encapsula la lógica utilizada para crear y actualizar bases de datos según las necesidades de las aplicaciones en desarrollo.

Una subclase de SQPteOpenHelper necesita implementar al menos tres métodos:

Constructor, que llama al constructor de la clase principal SQPteOpenHelper. Este método toma cuatro parámetros: el contexto (por ejemplo, una Actividad), el nombre de la base de datos, una fábrica de cursores opcional (generalmente NPl) y un número entero que representa la versión del modelo de base de datos que está utilizando.

El método OnCreate(), que requiere un objeto SQPteDatabase como parámetro, llena la tabla e inicializa los datos para este objeto según sea necesario.

Método onUpgrage(), que requiere tres parámetros, un objeto SQPteDatabase, un número de versión anterior y un número de versión nueva, para que pueda comprender claramente cómo convertir una base de datos del modelo antiguo al nuevo. . modelo.

El siguiente código de ejemplo muestra cómo heredar SQPteOpenHelper para crear una base de datos:

pubPc class DatabaseHelper extiende SQPteOpenHelper {

DatabaseHelper(Context context, String name, CursorFactory cursorFactory, int versión)

{

super(contexto, nombre, cursorFactory, versión);

}

@Override

pubPc void onCreate(SQPteDatabase db) {

// TODO Operaciones en la base de datos después de crear la base de datos

}

@Override

pubPc void onUpgrade(SQPteDatabase db, int PdVersion, int newVersion) {

// Operación TODO para cambiar la versión de la base de datos

}

@Override

pubPc void onOpen(SQPteDatabase db) {

super.onOpen(db);

// TODO se ejecuta primero después de cada apertura exitosa del base de datos

}

}

A continuación se explicará cómo crear tablas, insertar datos, eliminar tablas, etc. Puede obtener una instancia de SQPteDatabase llamando al método getReadableDatabase() o getWriteableDatabase(). El método a llamar depende de si necesita cambiar el contenido de la base de datos:

db=(new DatabaseHelper(getContext(). ))). getWritableDatabase();

return (db == nPl) ? false : true;

El código anterior devolverá una instancia de la clase SQPteDatabase. puedes consultar o modificar la base de datos.

Cuando haya completado la operación en la base de datos (por ejemplo, su actividad se haya cerrado), deberá llamar al método Close() de SQPteDatabase para liberar la conexión de la base de datos.

Crear tablas e índices

Para crear tablas e índices, necesita llamar al método execSQL() de SQPteDatabase para ejecutar declaraciones DDL. Si no hay excepción, este método no tiene valor de retorno.

Por ejemplo, puede ejecutar el siguiente código:

db.execSQL("CREATE TABLE mytable (_id INTEGER PRIMARY KEY

AUTOINCREMENT, title TEXT, value REAL) ;");

Esta declaración creará una tabla llamada mytable. La tabla tiene una columna llamada _id, que es la clave principal. El valor de esta columna es un número entero que crecerá automáticamente (por Por ejemplo, cuando inserta una fila, SQPte asignará automáticamente un valor a esta columna), y hay dos columnas: título (carácter) y valor (número de punto flotante). SQPte crea automáticamente índices en columnas de clave principal.

Normalmente, las tablas e índices se crean cuando se crea la base de datos por primera vez. Si no necesita cambiar el esquema de la tabla, no es necesario eliminar la tabla y los índices. Para eliminar la tabla y los índices, debe utilizar el método execSQL() para llamar a las declaraciones DROP INDEX y DROP TABLE.

Agregar datos a la tabla

El código anterior ha creado la base de datos y la tabla, y ahora necesita agregar datos a la tabla. Hay dos formas de agregar datos a la tabla.

Al igual que crear una tabla arriba, puede usar el método execSQL() para ejecutar INSERT, UPDATE, DELETE y otras declaraciones para actualizar los datos de la tabla. El método execSQL() se aplica a todas las declaraciones SQL que no devuelven resultados. Por ejemplo:

db.execSQL("INSERT INTO widgets (nombre, inventario)"

"VALUES ('Sprocket', 5)"); Otra forma es utilizar los métodos insert(), update(), delete() del objeto SQPteDatabase. Estos métodos toman parte de la declaración SQL como parámetro. Los ejemplos son los siguientes:

ContentValues ​​​​cv=new ContentValues();

cv.put(Constants.TITLE, "título de ejemplo");

cv.put( Constants.VALUE, SensorManager.GRAVITY_DEATH_STAR_I);

db.insert("mytable", getNPlCPumnHack(), cv);

El método update() tiene cuatro parámetros , es decir, el nombre de la tabla, un objeto ContentValues ​​que representa el nombre y el valor de la columna, una condición WHERE opcional y una cadena opcional que completa la declaración WHERE. Estas cadenas reemplazan la marca "?" update() actualiza el valor de la columna especificada según las condiciones, por lo que el método execSQL() se puede utilizar para lograr el mismo propósito.

La condición WHERE y sus parámetros son similares a los utilizados en otras API de SQL. Por ejemplo:

String[] parms=new String[] {"esto es una cadena"};

db.update("widgets", reemplazos, "name=?" , parms);

El uso del método eliminar() es similar a actualizar(), usando el nombre de la tabla, la condición WHERE opcional y la cadena correspondiente para completar la condición WHERE.

#p#subtitle#e#

Consultar la base de datos

De manera similar a INSERTAR, ACTUALIZAR y ELIMINAR, existen dos métodos para usar SELECT para recuperar datos de la base de datos SQPte.

1. Utilice rawQuery() para llamar directamente a la instrucción SELECT;

Utilice el método query() para crear una consulta.

Consultas sin formato Como sugiere el nombre de la API, rawQuery() es la solución más sencilla. A través de este método puede llamar a la declaración SQL SELECT. Por ejemplo:

Cursor c=db.rawQuery("SELECT name FROM sqPte_master WHERE type='table' AND name='mytable'", nPl);

En el ejemplo anterior , Consultamos la tabla del sistema SQPte (sqPte_master) para verificar si la tabla existe. El valor de retorno es un objeto de cursor cuyos métodos pueden iterar sobre los resultados de la consulta. Si la consulta es dinámica, utilizar este método puede resultar muy complicado. Por ejemplo, cuando no se puede determinar la columna que necesita consultar cuando se compila el programa, será mucho más conveniente utilizar el método query().

El método RegPar Queriesquery() crea una consulta utilizando segmentos de instrucción SELECT. El contenido de la instrucción SELECT se utiliza como parámetros del método query(), tales como: nombre de la tabla que se consultará, nombre del campo que se obtendrá, condición WHERE, incluidos parámetros posicionales opcionales para reemplazar el valor del parámetro posicional en WHERE. condición, GRUPO POR condición, TENIENDO condición. Además del nombre de la tabla, otros parámetros pueden ser nPl.

Por lo tanto, el segmento de código anterior se puede escribir como:

String[] cPumns={"ID", "inventory"};

String[] parms={"snicklefritz"}

Cursor resPt=db.query("widgets", cPumns, "name=?", parms, nPl, nPl, nPl);

Usar cursores sin importar cómo se ejecute la consulta devolverá un cursor, que es el cursor de la base de datos SQPte de Android. Usando el cursor, puede: obtener cuántos registros hay en el conjunto de resultados usando el método getCount() recorrer todos los registros a través de moveToFirst(), moveToNext; () y los métodos isAfterLast(); obtiene el nombre del campo mediante getCPumnNames(); conviértalo en un número de campo mediante getCPumnIndex(); obtiene el valor del registro actual del campo dado mediante getString(), getInt() y otros; métodos; vuelva a ejecutar la consulta para obtener el cursor a través del método requery(); utilice el método close() para liberar los recursos del cursor, por ejemplo, el siguiente código atraviesa la tabla mytable

Cursor resPt=db; .rawQuery("SELECT ID, nombre, inventario FROM mytable");

resPt.moveToFirst( );

while (!resPt.isAfterLast()) {

int id=resPt.getInt(0);

String nombre=resPt.getString( 1);

int inventario=resPt.getInt(2);

// haz algo útil con estos

resPt.moveToNext();

}

resPt.close();

Utilice la herramienta de administración de bases de datos SQPte en Android

Generalmente se usa al desarrollar en otras bases de datos Herramientas para inspeccionar y manipular el contenido de la base de datos, en lugar de simplemente usar la API de la base de datos. Usando el emulador de Android, existen dos formas alternativas de administrar la base de datos. Primero, el simulador viene incluido con el programa de consola sqPte3, al que se puede llamar mediante el comando adb shell. Siempre que ingrese al shell del simulador, ejecute el comando sqPte3 en la ruta de la base de datos. Los archivos de bases de datos generalmente se almacenan

en:/data/data/your.app.package/databases/your-db-name. Si desea utilizar herramientas más amigables, puede copiar la base de datos a su desarrollo. machine. , utilice el cliente compatible con SQPte para operarlo. En este caso, está operando con una copia de la base de datos y, si desea que sus cambios se reflejen en el dispositivo, debe hacer una copia de seguridad de la base de datos. Para eliminar la base de datos del dispositivo, puede usar el comando adb pPl (o realizar la operación correspondiente en el IDE). Para almacenar una base de datos modificada en el dispositivo, use el comando adb push. Uno de los clientes SQPte más convenientes es la extensión FireFox SQPte Manager, que funciona en todas las plataformas.

Conclusión

Si desea desarrollar aplicaciones de Android, debe almacenar datos en Android, y usar la base de datos SQPte es una muy buena opción. Este artículo presenta cómo usar la base de datos SQPte en aplicaciones de Android. Presenta principalmente el uso de SQPte en aplicaciones de Android para crear bases de datos y tablas, agregar datos, actualizar y recuperar datos. También presenta las herramientas de administración de SQPte más utilizadas. artículo, Puede operar fácilmente la base de datos SQPte en Android.

#p#subtitle#e#