A biblioteca androidx.sqlite
contém interfaces abstratas com implementações básicas que podem ser usadas para criar bibliotecas que acessam o SQLite. Você pode usar a biblioteca Room, que oferece
uma camada de abstração sobre o SQLite para permitir um acesso mais robusto ao banco de dados enquanto
Aproveite toda a capacidade do SQLite.
Como configurar dependências
A versão atual de androidx.sqlite
com suporte ao Kotlin Multi-Platform.
(KMP) é 2.5.0-alpha01 ou mais recente.
Para configurar o SQLite no seu projeto KMP, adicione as dependências dos artefatos
no arquivo build.gradle.kts
do seu módulo:
androidx.sqlite:sqlite
: as interfaces do driver do SQLiteandroidx.sqlite:sqlite-bundled
: implementação do driver incluído
APIs de driver do SQLite
Os grupos de bibliotecas androidx.sqlite
oferecem APIs de baixo nível para se comunicar com
da biblioteca SQLite incluída na biblioteca ao usar
androidx.sqlite:sqlite-bundled
ou na plataforma host, como Android ou iOS
ao usar androidx.sqlite:sqlite-framework
. As APIs seguem de perto o princípio
funcionalidade da API SQLite C.
Há três interfaces principais:
SQLiteDriver
: é o ponto de entrada para usar o SQLite e é responsável. para abrir conexões de banco de dados.SQLiteConnection
: é a representação do objetosqlite3
.SQLiteStatement
: é a representação do objetosqlite3_stmt
.
O exemplo a seguir mostra as principais APIs:
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()
}
Semelhante às APIs SQLite C, o uso comum é:
- Abra uma conexão de banco de dados usando o
SQLiteDriver
instanciado implementação. - Preparar uma instrução SQL usando
SQLiteConnection.prepare()
- Execute um
SQLiteStatement
ao:- Vinculação opcional de argumentos usando as funções
bind*()
. - Iteração no conjunto de resultados usando a função
step()
. - Ler colunas do conjunto de resultados usando as funções
get*()
.
- Vinculação opcional de argumentos usando as funções
Implementações do driver
A tabela a seguir resume as implementações de driver disponíveis:
Nome da turma |
Artefato |
Plataformas compatíveis |
AndroidSQLiteDriver |
androidx.sqlite:sqlite-framework |
Android |
NativeSQLiteDriver |
androidx.sqlite:sqlite-framework |
iOS, Mac e Linux |
BundledSQLiteDriver |
androidx.sqlite:sqlite-bundled |
Android, iOS, Mac, Linux e JVM (computador) |
A implementação recomendada para uso é BundledSQLiteDriver
, disponível em
androidx.sqlite:sqlite-bundled
. Ele inclui a biblioteca SQLite compilada
fonte, oferecendo a versão mais atualizada e consistência em todas as
plataformas de KMP suportadas.
Driver e Room do SQLite
As APIs do driver são úteis para interações de baixo nível com um banco de dados SQLite. Para uma biblioteca rica em recursos que fornece um acesso mais robusto ao SQLite, então O Room é recomendado.
Um RoomDatabase
depende de um SQLiteDriver
para executar operações de banco de dados e
uma implementação precisa ser configurada usando
RoomDatabase.Builder.setDriver()
. O quarto oferece
RoomDatabase.useReaderConnection
e
RoomDatabase.useWriterConnection
para ter acesso mais direto ao
conexões de banco de dados.