androidx.sqlite
库包含抽象接口以及基本的
可以用来构建自己的库
SQLite。您可以考虑使用 Room 库,它提供了
在 SQLite 上提供了一个抽象层,
充分利用 SQLite 的强大功能。
设置依赖项
androidx.sqlite
的当前版本(支持 Kotlin 多平台)
(KMP) 为 2.5.0-alpha01 或更高版本。
如需在 KMP 项目中设置 SQLite,请添加制品的依赖项
在您的模块的 build.gradle.kts
文件中添加以下代码:
androidx.sqlite:sqlite
- SQLite 驱动程序接口androidx.sqlite:sqlite-bundled
- 捆绑的驱动程序实现
SQLite 驱动程序 API
androidx.sqlite
库组提供用于
使用
androidx.sqlite:sqlite-bundled
或托管平台(例如 Android 或 iOS)中
使用 androidx.sqlite:sqlite-framework
时。API 密切关注
SQLite C API 的功能。
有 3 个主要接口:
SQLiteDriver
- 它是使用 SQLite 的入口点,对 打开数据库连接SQLiteConnection
- 表示sqlite3
对象。SQLiteStatement
- 表示sqlite3_stmt
对象。
以下示例展示了核心 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()
}
与 SQLite C API 类似,常见用法是:
- 使用实例化的
SQLiteDriver
打开数据库连接 实施。 - 使用
SQLiteConnection.prepare()
准备 SQL 语句 - 通过以下方式执行
SQLiteStatement
: <ph type="x-smartling-placeholder">- </ph>
- 可以选择使用
bind*()
函数绑定参数。 - 使用
step()
函数遍历结果集。 - 使用
get*()
函数从结果集中读取列。
- 可以选择使用
驱动程序实现
下表总结了可用的驱动程序实现:
课程名称 |
制品 |
支持的平台 |
AndroidSQLiteDriver |
androidx.sqlite:sqlite-framework |
Android |
NativeSQLiteDriver |
androidx.sqlite:sqlite-framework |
iOS、Mac 和 Linux |
BundledSQLiteDriver |
androidx.sqlite:sqlite-bundled |
Android、iOS、Mac、Linux 和 JVM(桌面) |
推荐使用的实现是:BundledSQLiteDriver
,位于
androidx.sqlite:sqlite-bundled
。它包含从该文件编译的 SQLite 库。
提供最新的版本,并在所有 Google Cloud 项目
支持的 KMP 平台
SQLite 驱动程序和 Room
驱动程序 API 有助于与 SQLite 数据库进行低级交互。 如需一个功能丰富的库,以便提供更可靠的 SQLite 访问,则 建议使用 Room。
RoomDatabase
依赖 SQLiteDriver
执行数据库操作以及
需要使用
RoomDatabase.Builder.setDriver()
。客房提供
RoomDatabase.useReaderConnection
和
RoomDatabase.useWriterConnection
:更直接地访问
数据库连接。