Sqlite
androidx.sqlite
程式庫包含抽象介面和基本實作,可用來建構您的資料庫來存取 SQLite。
建議您考慮使用 Room 程式庫,原因在於該程式庫透過 SQLite 提供抽象層,可提升資料庫存取的穩固性,並同時充分利用 SQLite 的強大功能。
最近更新時間 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 8 月 7 日 | 2.4.0 版 | - | - | 2.5.0-alpha06 版 |
宣告依附元件
如要新增 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-alpha06 版
2024 年 8 月 7 日
發布 androidx.sqlite:sqlite-*:2.5.0-alpha06
。2.5.0-alpha06 版包含這些修訂版本。
新功能
- 新增對
linuxArm64
Kotlin Multiplatform 目標的支援 (I139d3、b/338268719)
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 變更
- 已將
open()
超載 API 新增至BundledSQLiteDriver
,以便在開啟資料庫連線時傳遞開啟旗標。適合在唯讀模式下開啟資料庫,或使用序列化執行緒安全模式,而非使用 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
建立的資料庫會包含 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:SQLiteDriver
、SQLiteConnection
和SQLiteStatement
。構件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.0
、androidx.sqlite:sqlite-framework:2.4.0
和 androidx.sqlite:sqlite-ktx:2.4.0
。查看 2.4.0 版的修訂項。
2.3.0 版之後的重要變更
- 修正了多項錯誤。
2.4.0-rc01 版
2023 年 9 月 20 日
發布 androidx.sqlite:sqlite:2.4.0-rc01
、androidx.sqlite:sqlite-framework:2.4.0-rc01
和 androidx.sqlite:sqlite-ktx:2.4.0-rc01
。查看 2.4.0-rc01 版的修訂項。
2.4.0-beta01 版
2023 年 8 月 23 日
發布 androidx.sqlite:sqlite:2.4.0-beta01
、androidx.sqlite:sqlite-framework:2.4.0-beta01
和 androidx.sqlite:sqlite-ktx:2.4.0-beta01
。查看 2.4.0-beta01 版的修訂項。
2.4.0-alpha03 版
2023 年 8 月 9 日
發布 androidx.sqlite:sqlite:2.4.0-alpha03
、androidx.sqlite:sqlite-framework:2.4.0-alpha03
和 androidx.sqlite:sqlite-ktx:2.4.0-alpha03
。查看 2.4.0-alpha03 版的修訂項。
2.4.0-alpha02 版
2023 年 6 月 21 日
發布 androidx.sqlite:sqlite:2.4.0-alpha02
、androidx.sqlite:sqlite-framework:2.4.0-alpha02
和 androidx.sqlite:sqlite-ktx:2.4.0-alpha02
,但沒有任何異動。查看 2.4.0-alpha02 版的修訂項。
2.4.0-alpha01 版
2023 年 3 月 22 日
發布 androidx.sqlite:sqlite:2.4.0-alpha01
、androidx.sqlite:sqlite-framework:2.4.0-alpha01
和 androidx.sqlite:sqlite-ktx:2.4.0-alpha01
。查看 2.4.0-alpha01 版的修訂項。
修正錯誤
- 已修正
SupportSQLiteQueryBuilder
中可能發生的NullPointerException
。(5df8698)。
2.3.1 版
2.3.1 版
2023 年 3 月 22 日
發布 androidx.sqlite:sqlite:2.3.1
、androidx.sqlite:sqlite-framework:2.3.1
和 androidx.sqlite:sqlite-ktx:2.3.1
。查看 2.3.1 版的修訂項。
修正錯誤
- 避免發生架構問題,因為結構定義變更時,SQL 查詢不會在遷移期間失效。為避免這個問題,
FrameworkSupportSQLiteOpenHelper
現在會在遷移期間設定最低 SQL 陳述式快取。(0ad2a8f)。 - 修正了快取目錄無法用於
SupportSQLiteLock
的問題,因此必須妥善處理空值的檔案。(9d177dc)。 - 修正
attachedDbs
無法傳回附加資料庫完整清單的問題。(5f008e1)。
2.3.0 版本
2.3.0 版本
2023 年 1 月 11 日
發布 androidx.sqlite:sqlite:2.3.0
、androidx.sqlite:sqlite-framework:2.3.0
和 androidx.sqlite:sqlite-ktx:2.3.0
。2.3.0 版本包含這些修訂項目。
自 2.2.0 版本以來的重要變更
- 程式庫群組
androidx.sqlite
來源已從 Java 轉換為 Kotlin。請注意,由於androidx.sqlite
缺少某些是否可為空值的註解,因此如果來源位於 Kotlin,且程式碼對是否可為空值的推論錯誤,您可能會遇到來源不相容的錯誤。此外,某些 getter 方法會轉換成需要在 Kotlin 檔案上具有屬性存取語法的屬性。如果發生任何不相容的問題,請回報錯誤。(b/240707042) - 在
SupportSQLite's
設定中新增 API,允許資料在復原機制過程中遺失。(I1b830、b/215592732) - 在
FrameworkSQLite*
層級新增用來鎖定並使用多元處理程序的 API,這樣在首度同時建立及遷移資料庫時,可以避免發生多元處理程序競爭狀況。(Ied267、b/193182592)
2.3.0-rc01 版本
2022 年 12 月 7 日
發布 androidx.sqlite:sqlite:2.3.0-rc01
、androidx.sqlite:sqlite-framework:2.3.0-rc01
和 androidx.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-beta02
、androidx.sqlite:sqlite-framework:2.3.0-beta02
和 androidx.sqlite:sqlite-ktx:2.3.0-beta02
。2.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-beta01
、androidx.sqlite:sqlite-framework:2.3.0-beta01
和 androidx.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-alpha05
、androidx.sqlite:sqlite-framework:2.3.0-alpha05
和 androidx.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-alpha04
、androidx.sqlite:sqlite-framework:2.3.0-alpha04
和 androidx.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-alpha03
、androidx.sqlite:sqlite-framework:2.3.0-alpha03
和 androidx.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-alpha02
、androidx.sqlite:sqlite-framework:2.3.0-alpha02
和 androidx.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-alpha01
、androidx.sqlite:sqlite-framework:2.3.0-alpha01
和 androidx.sqlite:sqlite-ktx:2.3.0-alpha01
。查看 2.3.0-alpha01 版的修訂項。
API 變更
- 在 SupportSQLite 的設定中新增 API,允許在復原機制過程的資料遺失。(I1b830、b/215592732)
- 在 FrameworkSQLite* 層級新增用於鎖定及使用多程序的 API,以保護首次建立及遷移資料庫的多程序工作。(Ied267、b/193182592)。
2.2.0 版本
2.2.0 版本
2021 年 12 月 15 日
已釋出 androidx.sqlite:sqlite:2.2.0
、androidx.sqlite:sqlite-framework:2.2.0
和 androidx.sqlite:sqlite-ktx:2.2.0
。2.2.0 版包含這些修訂版本。
自 2.1.0 版以來的重要異動
新增 SupportSQLiteDatabase
中 execPerConnectionSQL()
的預設方法。
2.2.0-rc01 版本
2021 年 12 月 1 日
釋出 androidx.sqlite:sqlite:2.2.0-rc01
、androidx.sqlite:sqlite-framework:2.2.0-rc01
和 androidx.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-beta01
、androidx.sqlite:sqlite-framework:2.2.0-beta01
和 androidx.sqlite:sqlite-ktx:2.2.0-beta01
。2.2.0-beta01 版本包含這些修訂版本。
- 自前一個 Alpha 版起沒有任何異動。
2.2.0-alpha02 版本
2021 年 7 月 21 日
釋出 androidx.sqlite:sqlite:2.2.0-alpha02
、androidx.sqlite:sqlite-framework:2.2.0-alpha02
和 androidx.sqlite:sqlite-ktx:2.2.0-alpha02
。2.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-alpha01
、androidx.sqlite:sqlite-framework:2.2.0-alpha01
和 androidx.sqlite:sqlite-ktx:2.2.0-alpha01
。2.2.0-alpha01 版本包含這些修訂版本。
API 變更
- 在 SupportSQLiteDatabase 中新增
execPerConnectionSQL()
的預設方法 (I86326、b/172270145)
2.1.0 版本
2.1.0 版本
2020 年 1 月 22 日
發布 androidx.sqlite:sqlite:2.1.0
androidx.sqlite:sqlite-framework:2.1.0
和 androidx.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-rc01
。2.1.0-rc01 版包含這些修訂版本。
這個版本與 2.1.0-beta01
相同。
2.1.0-beta01 版本
2019 年 12 月 4 日
發布 androidx.sqlite:sqlite:2.1.0-beta01
、androidx.sqlite:sqlite-framework:2.1.0-beta01
和 androidx.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-alpha01
、androidx.sqlite:sqlite-framework:2.1.0-alpha01
和 androidx.sqlite:sqlite-ktx:2.1.0-alpha01
。2.1.0-alpha01 版本包含這些修訂版本。
API 變更
- 已將新屬性新增至
SupportSQLiteOpenHelper.Configuration
並命名為useNoBackupDirectory
,表示必須建立檔案型資料庫,且位置不是無備份目錄。
2.0.1 版本
2.0.1 版本
2019 年 3 月 13 日
發布 androidx.sqlite
構件群組的 2.0.1 版本,其中修正兩個錯誤。
修正錯誤
- 修正了
FrameworkSQLiteOpenHelper
在初始化期間無法正確地從資料庫毀損或遷移無效錯誤中復原的兩個問題。(b/111504749 及 b/111519144)