androidx.sqlite
程式庫包含抽象介面和基本
可用於建構自己的程式庫
或 SQLite。建議您使用 Room 程式庫
SQLite 上的抽象層
可強化資料庫存取權
它能充分發揮 SQLite 功能的效用
設定依附元件
目前支援 Kotlin 多平台的 androidx.sqlite
版本
(KMP) 為 2.5.0-alpha01 以上版本。
如要在 KMP 專案中設定 SQLite,請新增構件的依附元件
在模組的 build.gradle.kts
檔案中:
androidx.sqlite:sqlite
- SQLite 驅動程式介面androidx.sqlite:sqlite-bundled
:隨附驅動程式實作
SQLite 驅動程式 API
androidx.sqlite
程式庫群組提供低階 API,可用於與
使用 kubectl 指令
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
:- 視需要使用
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 程式庫:
可提供最新版本的所有平台
支援 KMP 平台。
SQLite 驅動程式和 Room
驅動程式 API 適合用於與 SQLite 資料庫的低階互動。 針對可提供更強大 SQLite 且功能豐富的程式庫, 建議您預訂會議室。
RoomDatabase
需要使用 SQLiteDriver
來執行資料庫作業,以及
實作時必須透過
RoomDatabase.Builder.setDriver()
。Room 提供
RoomDatabase.useReaderConnection
和
使用 RoomDatabase.useWriterConnection
,以便更直接地存取受管理的
和資料庫連線