La bibliothèque androidx.sqlite
contient des interfaces abstraites ainsi que des implémentations de base permettant de créer vos propres bibliothèques utilisant SQLite. Vous pouvez envisager d'utiliser la bibliothèque Room, qui fournit
une couche d'abstraction sur SQLite pour permettre un accès à la base de données plus robuste, tout en
et exploiter tout le potentiel de SQLite.
Configurer des dépendances
Version actuelle de androidx.sqlite
compatible avec la multiplateforme Kotlin
(KMP) est la version 2.5.0-alpha01 ou ultérieure.
Pour configurer SQLite dans votre projet KMP, ajoutez les dépendances pour les artefacts
dans le fichier build.gradle.kts
de votre module:
androidx.sqlite:sqlite
: interfaces du pilote SQLiteandroidx.sqlite:sqlite-bundled
: implémentation du pilote groupé
API SQLite Driver
Les groupes de bibliothèques androidx.sqlite
proposent des API de bas niveau pour communiquer avec
la bibliothèque SQLite soit incluse dans la bibliothèque lorsque vous utilisez
androidx.sqlite:sqlite-bundled
ou sur la plate-forme hôte (Android ou iOS, par exemple)
lorsque vous utilisez androidx.sqlite:sqlite-framework
. Les API suivent de près les
de l'API SQLite C.
Il existe trois interfaces principales:
SQLiteDriver
: point d'entrée pour utiliser SQLite et responsable permettant d'ouvrir des connexions à la base de données.SQLiteConnection
: est la représentation de l'objetsqlite3
.SQLiteStatement
: est la représentation de l'objetsqlite3_stmt
.
L'exemple suivant présente les principales API:
fun main() {
val databaseConnection = BundledSQLiteDriver().open("todos.db")
databaseConnection.execSQL(
"CREATE TABLE IF NOT EXISTS Todo (id INTEGER PRIMARY KEY, content TEXT)"
)
databaseConnection.prepare(
"INSERT OR IGNORE INTO Todo (id, content) VALUES (? ,?)"
).use { stmt ->
stmt.bindInt(index = 1, value = 1)
stmt.bindText(index = 2, value = "Try Room in the KMP project.")
stmt.step()
}
databaseConnection.prepare("SELECT content FROM Todo").use { stmt ->
while (stmt.step()) {
println("Action item: ${stmt.getText(0)}")
}
}
databaseConnection.close()
}
Semblable aux API C SQLite, l'utilisation courante est:
- Ouvrir une connexion à la base de données à l'aide du
SQLiteDriver
instancié la mise en œuvre. - Préparer une instruction SQL à l'aide de
SQLiteConnection.prepare()
- Pour exécuter une
SQLiteStatement
, procédez comme suit: <ph type="x-smartling-placeholder">- </ph>
- Vous pouvez aussi lier des arguments à l'aide des fonctions
bind*()
. - Itérer l'ensemble de résultats à l'aide de la fonction
step()
- Lecture des colonnes de l'ensemble de résultats à l'aide des fonctions
get*()
.
- Vous pouvez aussi lier des arguments à l'aide des fonctions
Implémentations des pilotes
Le tableau suivant récapitule les implémentations de pilotes disponibles:
Nom du cours |
Artefact |
Plates-formes compatibles |
AndroidSQLiteDriver |
androidx.sqlite:sqlite-framework |
Android |
NativeSQLiteDriver |
androidx.sqlite:sqlite-framework |
iOS, Mac et Linux |
BundledSQLiteDriver |
androidx.sqlite:sqlite-bundled |
Android, iOS, Mac, Linux et JVM (ordinateur de bureau) |
L'implémentation recommandée est BundledSQLiteDriver
, disponible dans
androidx.sqlite:sqlite-bundled
Il inclut la bibliothèque SQLite compilée à partir de
source, offrant la version la plus récente et une cohérence sur toutes les
plates-formes KMP compatibles.
Pilote SQLite et Room
Les API de pilote sont utiles pour les interactions de bas niveau avec une base de données SQLite. Pour une bibliothèque riche en fonctionnalités offrant un accès plus robuste à SQLite, Il est recommandé d'utiliser Room.
Un RoomDatabase
s'appuie sur un SQLiteDriver
pour effectuer des opérations de base de données.
une implémentation doit être configurée
RoomDatabase.Builder.setDriver()
Avantages de Room
RoomDatabase.useReaderConnection
et
RoomDatabase.useWriterConnection
pour un accès plus direct aux
les connexions à la base de données.