Sqlite

androidx.sqlite 程式庫包含抽象介面和基本實作,可用來建構您的資料庫來存取 SQLite。

建議您考慮使用 Room 程式庫,原因在於該程式庫透過 SQLite 提供抽象層,可提升資料庫存取的穩固性,並同時充分利用 SQLite 的強大功能。

最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2025 年 7 月 16 日 2.5.2 - - 2.6.0-alpha01

宣告依附元件

如要新增 SQLite 的依附元件,您必須在專案中新增 Google Maven 存放區。詳情請參閱 Google 的 Maven 存放區

在應用程式或模組的 build.gradle 檔案中,新增所需構件的依附元件:

Groovy

dependencies {
    def sqlite_version = "2.5.2"

    // Java language implementation
    implementation "androidx.sqlite:sqlite:$sqlite_version"

    // Kotlin
    implementation "androidx.sqlite:sqlite-ktx:$sqlite_version"

    // Implementation of the AndroidX SQLite interfaces via the Android framework APIs.
    implementation "androidx.sqlite:sqlite-framework:$sqlite_version"
}

Kotlin

dependencies {
    val sqlite_version = "2.5.2"

    // Java language implementation
    implementation("androidx.sqlite:sqlite:$sqlite_version")

    // Kotlin
    implementation("androidx.sqlite:sqlite-ktx:$sqlite_version")

    // Implementation of the AndroidX SQLite interfaces via the Android framework APIs.
    implementation("androidx.sqlite:sqlite-framework:$sqlite_version")
}

如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。

意見回饋

您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 文件

2.6 版本

2.6.0-alpha01 版本

2025 年 7 月 16 日

發布 androidx.sqlite:sqlite-*:2.6.0-alpha01。2.6.0-alpha01 版包含這些修訂項目

新功能

API 變更

  • 新增 API,用於檢查 SQLiteConnection 是否有進行中的交易。由於 SQLite 交易不會巢狀化,因此應用程式可透過這個 API 判斷是否應使用 BEGIN / COMMIT 或 SAVEPOINT / RELEASE。(I5bf5eb/319627988)
  • SQLiteDriver 中新增 API,用於回報內部是否有連線集區。(I52a51b/408010324)

2.5 版本

2.5.2 版本

2025 年 6 月 18 日

發布 androidx.sqlite:sqlite-*:2.5.2。2.5.2 版包含這些修訂項目

修正錯誤

  • 新增缺少的 R8 / Proguard 規則,避免 JNI / 外部函式遭到混淆。(b/421626199)
  • 修正錯誤:SQL 中的開頭註解會導致陳述式以非讀取查詢的形式執行。(b/413061402)

2.5.1 版

2025 年 5 月 7 日

發布 androidx.sqlite:sqlite-*:2.5.1。2.5.1 版包含這些修訂項目

API 變更

  • 允許 androidx.sqlite:sqlite-bundled 透過名為 androidx.sqlite.driver.bundled.path 的系統屬性,從指定路徑載入原生元件。b/381282544

2.5.0 版

2025 年 4 月 9 日

發布 androidx.sqlite:sqlite-*:2.5.0。2.5.0 版包含這些修訂項目

自 2.4.0 版本以來的重要異動

  • Kotlin Multi-Platform (KMP) 支援:隨著 Room KMP 2.7.0 版發布,啟用 Room KMP 的 SQLite API 也已更新。套件 andriodx.sqlite 包含三個介面,用於定義低階 SQLite API:SQLiteDriverSQLiteConnectionSQLiteStatement。構件 androidx.sqlite:sqlite-framework 會以原生方式實作 Android 和 iOS 的介面,而 androidx.sqlite:sqlite-bundled 則會實作從來源編譯的 SQLite (也稱為「隨附的 SQLite」)。如要進一步瞭解 SQLite Driver API,請參閱 SQLite KMP 官方說明文件

2.5.0-rc03 版

2025 年 3 月 26 日

發布 androidx.sqlite:sqlite-*:2.5.0-rc03。2.5.0-rc03 版包含這些修訂項目

修正錯誤

  • 還原二進位檔中不相容的重大變更,該變更錯誤地移除了其他程式庫 (例如 Room) 使用的 SupportSQLiteCompat API (b/402796648)。

2.5.0-rc02 版

2025 年 3 月 12 日

發布 androidx.sqlite:sqlite-*:2.5.0-rc02,該版本與上一個版本沒有差別。2.5.0-rc02 版包含這些修訂項目

2.5.0-rc01 版

2025 年 2 月 26 日

發布 androidx.sqlite:sqlite-*:2.5.0-rc01。2.5.0-rc01 版包含這些修訂項目

修正錯誤

  • 修正 JVM 的 androidx.sqlite 構件 Gradle 中繼資料,避免 JVM 專案解析 Android 變體,並導致 NoClassDefFoundError: androidx/sqlite/SQLiteDriver (b/396148592b/396184120)。

2.5.0-beta01 版本

2025 年 2 月 12 日

發布 androidx.sqlite:sqlite-*:2.5.0-beta01,該版本與上一個 Alpha 版沒有差別。2.5.0-beta01 版包含這些修訂項目

2.5.0-alpha13 版

2025 年 1 月 29 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha13。2.5.0-alpha13 版包含這些修訂項目

API 變更

  • 移除 androidx.sqlite.use,現在 stdlib 中的 Kotlin AutoCloseable.use 會取代該函式。(I470f0b/315461431)
  • 程式庫現在會使用 Kotlin 2.0 編譯,專案必須至少使用 2.0 版才能使用。(I8efb0b/315461431b/384600605)

修正錯誤

  • BundledSQLiteDriver 的原生程式庫載入作業設為延遲載入,並在開啟第一個連線時執行,避免在主執行緒中執行 I/O 作業。(I78e92b/363985585)

2.5.0-alpha12 版

2024 年 12 月 11 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha12。2.5.0-alpha12 版包含這些修訂項目

2.5.0-alpha11 版

2024 年 10 月 30 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha11。2.5.0-alpha11 版包含這些修訂項目

2.5.0-alpha10 版

2024 年 10 月 16 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha10。2.5.0-alpha10 版包含這些修訂項目

API 變更

  • 加入 SQLiteStatement.getColumnType() 和各種 SQLITE_DATA_* 結果常數,即可擷取資料欄的資料類型。(I1985cb/369636251)

2.5.0-alpha09 版

2024 年 10 月 2 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha09。2.5.0-alpha09 版包含這些修訂項目

2.5.0-alpha08 版

2024 年 9 月 18 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha08。2.5.0-alpha08 版包含這些修訂項目

2.5.0-alpha07 版

2024 年 8 月 21 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha07。2.5.0-alpha07 版包含這些修訂項目

新功能

  • 在 JVM / 桌面目標中新增 Linux ARM 64 支援。(b/358045505)

2.5.0-alpha06 版

2024 年 8 月 7 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha06。2.5.0-alpha06 版包含這些修訂項目

新功能

2.5.0-alpha05 版

2024 年 7 月 10 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha05。2.5.0-alpha05 版包含這些修訂項目

API 變更

  • 已將 SQLiteKt 重新命名為 SQLite,並將 BundledSQLiteKt 重新命名為 BundledSQLite。(I8b501)

2.5.0-alpha04 版本

2024 年 6 月 12 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha04。2.5.0-alpha04 版包含這些修訂項目

API 變更

  • BundledSQLiteDriver 中新增 open() 多載 API,可在開啟資料庫連線時傳遞開啟標記。適用於以唯讀模式開啟資料庫,或使用序列化安全執行緒模式,而非與 SQLite 搭配編譯的多執行緒模式 (b/340949940)。

修正錯誤

  • 修正了 Bundled SQLite Driver 中的連結問題,這個問題會導致 ARM32 Android 裝置缺少原子符號,進而擲回 UnsatisfiedLinkError。(b/341639198)
  • 修正驅動程式中的問題:將長度為零的位元組陣列繫結至資料欄時,從該資料欄讀取資料會導致空值。

2.5.0-alpha03 版本

2024 年 5 月 29 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha03。2.5.0-alpha03 版包含這些修訂項目

修正錯誤

  • 修正 BundledSQLiteDriver 的問題,現在使用該函式庫建立的資料庫不會包含 C 空值終止字元。(b/340822359)

2.5.0-alpha02 版本

2024 年 5 月 14 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha02,自 2.5.0-alpha01 版以來沒有重大異動。2.5.0-alpha02 版包含這些修訂項目

2.5.0-alpha01 版

2024 年 5 月 1 日

發布 androidx.sqlite:sqlite-*:2.5.0-alpha01。2.5.0-alpha01 版包含這些修訂項目

新功能

  • Kotlin Multi-Platform (KMP) 支援:隨著 Room 2.7.0-alpha01 (第一個 Room KMP 版本) 的發布,啟用 Room KMP 的 SQLite API 也已更新。andriodx.sqlite 套件包含三個介面,可定義低階 SQLite API:SQLiteDriverSQLiteConnectionSQLiteStatement。構件 androidx.sqlite:sqlite-framework 提供 Android 和 iOS 原生介面的實作項目,而 androidx.sqlite:sqlite-bundled 則提供使用從來源編譯的 SQLite 實作項目 (也稱為「隨附的 SQLite」)。如要進一步瞭解 SQLite 驅動程式 API,請參閱 SQLite KMP 官方說明文件

2.4 版

2.4.0 版

2023 年 10 月 18 日

發布 androidx.sqlite:sqlite:2.4.0androidx.sqlite:sqlite-framework:2.4.0androidx.sqlite:sqlite-ktx:2.4.02.4.0 版包含此連結所列的修訂項目。

2.3.0 版之後的重要變更

  • 修正多項錯誤。

2.4.0-rc01 版

2023 年 9 月 20 日

發布 androidx.sqlite:sqlite:2.4.0-rc01androidx.sqlite:sqlite-framework:2.4.0-rc01androidx.sqlite:sqlite-ktx:2.4.0-rc01查看 2.4.0-rc01 版的修訂項

2.4.0-beta01 版

2023 年 8 月 23 日

發布 androidx.sqlite:sqlite:2.4.0-beta01androidx.sqlite:sqlite-framework:2.4.0-beta01androidx.sqlite:sqlite-ktx:2.4.0-beta012.4.0-beta01 版包含此連結所列的修訂項目。

2.4.0-alpha03 版

2023 年 8 月 9 日

發布 androidx.sqlite:sqlite:2.4.0-alpha03androidx.sqlite:sqlite-framework:2.4.0-alpha03androidx.sqlite:sqlite-ktx:2.4.0-alpha032.4.0-alpha03 版包含此連結所列的修訂項目。

2.4.0-alpha02 版

2023 年 6 月 21 日

發布 androidx.sqlite:sqlite:2.4.0-alpha02androidx.sqlite:sqlite-framework:2.4.0-alpha02androidx.sqlite:sqlite-ktx:2.4.0-alpha02,但沒有任何異動。2.4.0-alpha02 版包含此連結所列的修訂項目。

2.4.0-alpha01 版

2023 年 3 月 22 日

發布 androidx.sqlite:sqlite:2.4.0-alpha01androidx.sqlite:sqlite-framework:2.4.0-alpha01androidx.sqlite:sqlite-ktx:2.4.0-alpha012.4.0-alpha01 版包含此連結所列的修訂項目。

修正錯誤

  • 修正了 SupportSQLiteQueryBuilder 中可能發生的 NullPointerException。(5df8698)

2.3.1 版

2.3.1 版

2023 年 3 月 22 日

發布 androidx.sqlite:sqlite:2.3.1androidx.sqlite:sqlite-framework:2.3.1androidx.sqlite:sqlite-ktx:2.3.12.3.1 版包含此連結所列的修訂項目。

修正錯誤

  • 避免架構問題:在遷移期間變更結構定義後,SQL 查詢不會失效。FrameworkSupportSQLiteOpenHelper 現在會在遷移期間設定最低 SQL 陳述式快取,以避免發生問題。(0ad2a8f)
  • 修正快取目錄可能無法供 SupportSQLiteLock 使用的問題,因此必須妥善處理空值檔案。(9d177dc)
  • 修正 attachedDbs 未傳回完整附加資料庫清單的問題。(5f008e1)

2.3.0 版本

2.3.0 版本

2023 年 1 月 11 日

發布 androidx.sqlite:sqlite:2.3.0androidx.sqlite:sqlite-framework:2.3.0androidx.sqlite:sqlite-ktx:2.3.02.3.0 版本包含這些修訂項目。

自 2.2.0 版本以來的重要變更

  • 程式庫群組 androidx.sqlite 來源已從 Java 轉換為 Kotlin。請注意,由於 androidx.sqlite 缺少某些是否可為空值的註解,因此如果來源位於 Kotlin,且程式碼對是否可為空值的推論錯誤,您可能會遇到來源不相容的錯誤。此外,某些 getter 方法會轉換成需要在 Kotlin 檔案上具有屬性存取語法的屬性。如果發生任何不相容的問題,請回報錯誤。(b/240707042)
  • SupportSQLite's 設定中新增 API,允許資料在復原機制過程中遺失。(I1b830b/215592732)
  • FrameworkSQLite* 層級新增用來鎖定並使用多元處理程序的 API,這樣在首度同時建立及遷移資料庫時,可以避免發生多元處理程序競爭狀況。(Ied267b/193182592)

2.3.0-rc01 版本

2022 年 12 月 7 日

發布 androidx.sqlite:sqlite:2.3.0-rc01androidx.sqlite:sqlite-framework:2.3.0-rc01androidx.sqlite:sqlite-ktx:2.3.0-rc01查看 2.3.0-rc01 版的修訂項

修正錯誤

  • 解決可為空值資料欄的 SupportSQLiteQueryBuilder 相關 NPE 問題。(Ica8f5)

2.3.0-beta02 版本

2022 年 11 月 9 日

發布 androidx.sqlite:sqlite:2.3.0-beta02androidx.sqlite:sqlite-framework:2.3.0-beta02androidx.sqlite:sqlite-ktx:2.3.0-beta022.3.0-beta02 版包含以下修訂項目。

  • 修正將查詢引數從不變 (Array<Any?>) 擷取到逆變 (Array<out Any?>) 的各種 API,以符合 Java 的陣列行為。(b/253531073)

2.3.0-beta01 版本

2022 年 10 月 5 日

發布 androidx.sqlite:sqlite:2.3.0-beta01androidx.sqlite:sqlite-framework:2.3.0-beta01androidx.sqlite:sqlite-ktx:2.3.0-beta01查看 2.3.0-beta01 版的修訂項

API 變更

  • 所有的 android.sqlite 來源都已從 Java 轉換為 Kotlin。(b/240707042)
  • 轉換作業的一項顯著變化是下列 getter 函式已成為屬性:
    • SupportSQLiteDatabase 中:
    • attachedDbs
    • isDatabaseIntegrityOk
    • isDbLockedByCurrentThread
    • isOpen
    • isReadOnly
    • isWriteAheadLoggingEnabled
    • maximumSize
    • pageSize
    • path
    • version
    • SupportSQLiteOpenHelper 中:
    • databaseName
    • readableDatabase
    • writableDatabase

2.3.0-alpha05 版本

2022 年 8 月 24 日

發布 androidx.sqlite:sqlite:2.3.0-alpha05androidx.sqlite:sqlite-framework:2.3.0-alpha05androidx.sqlite:sqlite-ktx:2.3.0-alpha05查看 2.3.0-alpha05 版的修訂項

API 變更

  • 程式庫群組 androidx.sqlite 來源已從 Java 轉換為 Kotlin。請注意,由於 androidx.sqlite 缺少某些是否可為空值的註解,因此如果來源位於 Kotlin,且程式碼對否可為空值的推論錯誤,您可能會遇到原始碼不相容的錯誤。如果發生任何不相容的問題,請回報錯誤。(b/240707042)

2.3.0-alpha04 版本

2022 年 8 月 10 日

發布 androidx.sqlite:sqlite:2.3.0-alpha04androidx.sqlite:sqlite-framework:2.3.0-alpha04androidx.sqlite:sqlite-ktx:2.3.0-alpha04查看 2.3.0-alpha04 版的修訂項

API 變更

  • 更新是否可為空值 (I29fbd)

2.3.0-alpha03 版本

2022 年 6 月 1 日

發布 androidx.sqlite:sqlite:2.3.0-alpha03androidx.sqlite:sqlite-framework:2.3.0-alpha03androidx.sqlite:sqlite-ktx:2.3.0-alpha03查看 2.3.0-alpha03 版的修訂項

API 變更

  • androidx.sqlite.ProcessLock 設為受限。API 作用範圍已設定並限制為在 androidx.sqlite 內的功能,不應用作一般用途的多行程鎖定。(I1643f)

2.3.0-alpha02 版

2022 年 4 月 6 日

釋出 androidx.sqlite:sqlite:2.3.0-alpha02androidx.sqlite:sqlite-framework:2.3.0-alpha02androidx.sqlite:sqlite-ktx:2.3.0-alpha02瞭解 2.3.0-alpha02 版包含哪些修訂版本

  • 自 2.3.0-alpha01 版以來皆無重大異動

2.3.0-alpha01 版

2022 年 2 月 23 日

釋出 androidx.sqlite:sqlite:2.3.0-alpha01androidx.sqlite:sqlite-framework:2.3.0-alpha01androidx.sqlite:sqlite-ktx:2.3.0-alpha01查看 2.3.0-alpha01 版的修訂項

API 變更

  • 在 SupportSQLite 的設定中新增 API,允許在復原機制過程的資料遺失。(I1b830b/215592732)
  • 在 FrameworkSQLite* 層級新增用於鎖定及使用多程序的 API,以保護首次建立及遷移資料庫的多程序工作。(Ied267b/193182592)。

2.2.0 版本

2.2.0 版本

2021 年 12 月 15 日

已釋出 androidx.sqlite:sqlite:2.2.0androidx.sqlite:sqlite-framework:2.2.0androidx.sqlite:sqlite-ktx:2.2.02.2.0 版包含這些修訂版本。

自 2.1.0 版以來的重要異動

新增 SupportSQLiteDatabaseexecPerConnectionSQL() 的預設方法。

2.2.0-rc01 版本

2021 年 12 月 1 日

釋出 androidx.sqlite:sqlite:2.2.0-rc01androidx.sqlite:sqlite-framework:2.2.0-rc01androidx.sqlite:sqlite-ktx:2.2.0-rc01版本 2.2.0-rc01 包含這些修訂版本。

自 2.2.0-beta01 起沒有重大異動。

2.2.0-beta01 版本

2021 年 10 月 13 日

釋出 androidx.sqlite:sqlite:2.2.0-beta01androidx.sqlite:sqlite-framework:2.2.0-beta01androidx.sqlite:sqlite-ktx:2.2.0-beta012.2.0-beta01 版本包含這些修訂版本。

  • 自前一個 Alpha 版起沒有任何異動。

2.2.0-alpha02 版本

2021 年 7 月 21 日

釋出 androidx.sqlite:sqlite:2.2.0-alpha02androidx.sqlite:sqlite-framework:2.2.0-alpha02androidx.sqlite:sqlite-ktx:2.2.0-alpha022.2.0-alpha02 版本包含這些修訂版本。

自 2.2.0-alpha01 起沒有重大異動。此版本只是搭配 Room 2.4.0-alpha04 版本發布。

2.2.0-alpha01 版本

2021 年 6 月 16 日

釋出 androidx.sqlite:sqlite:2.2.0-alpha01androidx.sqlite:sqlite-framework:2.2.0-alpha01androidx.sqlite:sqlite-ktx:2.2.0-alpha012.2.0-alpha01 版本包含這些修訂版本。

API 變更

  • 在 SupportSQLiteDatabase 中新增 execPerConnectionSQL() 的預設方法 (I86326b/172270145)

2.1.0 版本

2.1.0 版本

2020 年 1 月 22 日

發布 androidx.sqlite:sqlite:2.1.0 androidx.sqlite:sqlite-framework:2.1.0androidx.sqlite:sqlite-ktx:2.1.0,且自 2.1.0-rc01 版本以來皆無異動。2.1.0 版本包含這些修訂版本

自 2.0.1 版本起的重要異動

  • 支援 useNoBackupDirectory,表示使用 SupportSQLiteOpenHelper 時,資料庫必須建立在無備份目錄。

2.1.0-rc01 版本

2020 年 1 月 8 日

已釋出 androidx.sqlite:sqlite-*:2.1.0-rc012.1.0-rc01 版包含這些修訂版本

這個版本與 2.1.0-beta01 相同。

2.1.0-beta01 版本

2019 年 12 月 4 日

發布 androidx.sqlite:sqlite:2.1.0-beta01androidx.sqlite:sqlite-framework:2.1.0-beta01androidx.sqlite:sqlite-ktx:2.1.0-beta01,且自 2.1.0-alpha01 版本以來皆無異動。2.1.0-beta01 版本包含這些修訂版本

2.1.0-alpha01 版本

2019 年 11 月 7 日

釋出 androidx.sqlite:sqlite:2.1.0-alpha01androidx.sqlite:sqlite-framework:2.1.0-alpha01androidx.sqlite:sqlite-ktx:2.1.0-alpha012.1.0-alpha01 版本包含這些修訂版本

API 變更

  • 已將新屬性新增至 SupportSQLiteOpenHelper.Configuration 並命名為 useNoBackupDirectory,表示必須建立檔案型資料庫,且位置不是無備份目錄。

2.0.1 版本

2.0.1 版本

2019 年 3 月 13 日

發布 androidx.sqlite 構件群組的 2.0.1 版本,其中修正兩個錯誤。

修正錯誤

  • 修正了 FrameworkSQLiteOpenHelper 在初始化期間無法正確地從資料庫毀損或遷移無效錯誤中復原的兩個問題。(b/111504749b/111519144)