Guide de développement

Local Navigation

Ouverture et fermeture de bases de données

Pour ouvrir une base de données, vous pouvez utiliser la méthode open ou openOrCreate, qui se trouvent toutes les deux dans la classe DatabaseFactory.

Vous pouvez ouvrir plusieurs connexions en lecture seule vers une base de données, mais une seule connexion en lecture-écriture peut exister à la fois.

Si vous souhaitez ouvrir une base de données à la fois en lecture-écriture et en lecture seule, ouvrez-la d'abord en lecture-écriture. Une tentative d'ouverture d'une base de données en lecture-écriture alors qu'elle est déjà ouverte (en lecture-écriture ou en lecture seule) générera une « erreur de système de fichiers 12 », qui indique une tentative d'ouverture de plusieurs connexions en lecture-écriture vers la même base de données.

Pour fermer une base de données, utilisez la méthode Database.close. Pour garantir que close est toujours appelé, vous devez l'appeler dans un bloc finally.

La base de données peut se fermer automatiquement lorsque le système de fichiers est démonté. Par exemple, si un fichier de base de données est stocké sur une carte multimédia externe et que l'utilisateur connecte le smartphone à un ordinateur et active le mode de mémoire de masse USB, la base de données peut se fermer car le système de fichiers est géré par le système d'exploitation de l'ordinateur et le terminal n'y a pas accès. Toutes les bases de données ouvertes sur la carte externe se ferment et ne peuvent pas être ouvertes jusqu'à ce que le mode de mémoire de masse USB prenne fin.

Vous pouvez effectuer le suivi de l'utilisation de la mémoire pour chaque connexion de base de données à l'aide des méthodes suivantes : Database.getCacheUsed, Database.getSchemaUsed et Database.getStatementUsed.

Attachement et détachement de bases de données

L'attachement d'une base de données à une connexion de base de données existante vous permet d'interroger de plusieurs bases de données dans une seule instruction SQL, à l'aide des noms que vous spécifiez pour les bases de données lorsque vous les attachez. La première base de données connectée portera le nom de base de données main.

Des bases de données en texte brut et cryptées peuvent être attachées. Vous pouvez attacher jusqu'à dix bases de données à une connexion de base de données existante à l'aide de la méthode Database.attach. Vous pouvez détacher des bases de données à l'aide de la méthode Database.detach.

Remarque : Les applications dont les informations sont sensibles devraient utiliser des bases de données cryptées et protégées afin d'empêcher d'autres applications d'utiliser la méthode attach pour y accéder.

Au lieu de Database.detach, vous pouvez utiliser la commande SQLite DETACH pour détacher des bases de données. Pour les raisons de sécurité, l'API de base de données n'autorise pas l'utilisation de la commande ATTACH dans une instruction SQL.

Pour voir quelles bases de données sont rattachées à la connexion de base de données actuelle, utilisez le pragma database_list.

L'extrait de code suivant utilise l'API de base de données pour rattacher une base de données en texte brut à la base de données actuelle.

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

L'extrait de code suivant détache la base de données à l'aide de la méthode detach.

d.detach("test");

L'extrait de code suivant détache la base de données à l'aide d'une instruction SQL.

d.executeStatement("DETACH test");

Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.