Guía de desarrollo

Local Navigation

Apertura y cierre de bases de datos

Para abrir una base de datos, puede utilizar los métodos open o openOrCreate, ambos de la clase DatabaseFactory.

Puede abrir múltiples conexiones de base de datos de sólo lectura, pero sólo podrá abrir una conexión de lectura y escritura al mismo tiempo.

Si quiere abrir una base de datos como de lectura y escritura y de sólo lectura, ábrala como de lectura y escritura primero. Si intenta abrir una base de datos como de lectura y escritura cuando ya está abierta (ya sea como de lectura y escritura o de sólo lectura) generará el mensaje "Error del sistema de archivos 12", que indica que se ha producido un intento de abrir más de una conexión de lectura y escritura de la misma base de datos.

Para cerrar una base de datos, utilice el método Database.close. Para garantizar que siempre se llama a close, debe llamarlo en un bloque finally.

La base de datos puede cerrarse automáticamente cuando el sistema de archivos no está montado. Por ejemplo, si un archivo de base de datos se almacena en una tarjeta de memoria externa y el usuario conecta el smartphone a un ordenador y activa el modo de almacenamiento masivo USB, la base de datos puede cerrarse debido a que el sistema operativo del ordenador gestiona el sistema de archivos y el dispositivo no tiene acceso a él. Todas las bases de datos abiertas en la memoria externa se cierran y no se pueden abrir hasta que finalice el modo de almacenamiento masivo USB.

Puede realizar un seguimiento de la memoria para cada conexión de base de datos mediante los siguientes métodos: Database.getCacheUsed, Database.getSchemaUsed y Database.getStatementUsed.

Adición y separación de bases de datos

Agregar una base de datos a una conexión de base de datos existente le permite ejecutar consultas en varias bases de datos con una sola instrucción SQL, utilizando los nombres que especifique para las bases de datos cuando las agregue. La primera base de datos que hay que conectar se conoce como base de datos main.

Se pueden agregar bases de datos de texto sin formato y cifradas. Puede agregar hasta diez bases de datos a una conexión de base de datos existente mediante el método Database.attach. Puede separar las bases de datos mediante el método Database.detach.

Nota: Las aplicaciones que contienen información confidencial deben utilizar bases de datos cifradas y protegidas para evitar que otras aplicaciones utilicen el método attach para acceder a ellas.

Como alternativa al método Database.detach, puede utilizar el comando DETACH de SQLite para separar las bases de datos. Por motivos de seguridad, la API de base de datos no permite el uso del comando ATTACH en una instrucción SQL.

Para ver qué bases de datos hay agregadas a la conexión de base de datos actual, utilice el pragma database_list.

El siguiente fragmento de código utiliza la API de base de datos para agregar una base de datos de texto sin formato a la base de datos actual.

URI myURI = URI.create("file:///SDCard/test.db");
d.attach(myURI, "test", null);
//Do something with the attached database

El siguiente fragmento de código separa la base de datos mediante el método detach.

d.detach("test");

El siguiente fragmento de código separa la base de datos mediante una instrucción SQL.

d.executeStatement("DETACH test");

¿Le ha resultado útil esta información? Envíenos sus comentarios.