Sqlite

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

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

最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2024 年 10 月 30 日 2.4.0 - - 2.5.0-alpha11

宣告依附元件

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

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

Groovy

dependencies {
    def sqlite_version = "2.4.0"

    // 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.4.0"

    // 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.5 版本

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)。

修正錯誤

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

2.5.0-alpha03 版本

2024 年 5 月 29 日

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

修正錯誤

  • 修正 BundledSQLiteDriver 的問題,當使用 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 多平台 (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 Driver 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-beta012.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)