Sqlite
androidx.sqlite
库包含抽象接口和基本实现,可用于构建自己的库来访问 SQLite。
您可能想要考虑使用 Room 库,它在 SQLite 上提供了一个抽象层,让您能够在充分利用 SQLite 的强大功能的同时,获享更完善的数据库访问机制。
最近更新时间 | 稳定版 | 候选版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 8 月 21 日 | 2.4.0 | - | - | 2.5.0-alpha07 |
声明依赖项
如需添加 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") }
如需详细了解依赖项,请参阅添加 build 依赖项。
反馈
您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。
如需了解详情,请参阅问题跟踪器文档。
版本 2.5
版本 2.5.0-alpha07
2024 年 8 月 21 日
发布了 androidx.sqlite:sqlite-*:2.5.0-alpha07
。版本 2.5.0-alpha07 包含这些提交内容。
新功能
- 在 JVM / Desktop 目标中添加了对 Linux ARM 64 的支持。(b/358045505)
版本 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 变更
- 向
BundledSQLiteDriver
添加了open()
过载 API,以在打开数据库连接时传递打开标志。适用于以只读模式打开数据库或使用序列化线程安全模式,而不是编译 SQLite 时采用的多线程模式 (b/340949940)。
bug 修复
- 修复了捆绑的 SQLite 驱动程序中的链接问题,此问题会导致在搭载 ARM32 的 Android 设备中缺少原子符号时抛出
UnsatisfiedLinkError
。(b/341639198) - 修复了驱动程序中的以下问题:将零长度的字节数组绑定到一列中时,从该数组读取数据时会导致出现 null 值。
版本 2.5.0-alpha03
2024 年 5 月 29 日
发布了 androidx.sqlite:sqlite-*:2.5.0-alpha03
。版本 2.5.0-alpha03 中包含这些提交内容。
bug 修复
- 修复了
BundledSQLiteDriver
存在的问题:使用它创建的数据库会包含 C null 终止符字符。(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 以来的重要变更
- 添加了各种 bug 修复。
版本 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 中包含这些提交内容。
bug 修复
- 修复了可能出现在
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 中包含这些提交内容。
bug 修复
- 避免出现如下框架问题:在迁移过程中,即使架构发生更改,SQL 查询也不会失效。
FrameworkSupportSQLiteOpenHelper
现在将在迁移期间设置最小 SQL 语句缓存,以避免此问题。(0ad2a8f) - 修复了缓存目录可能无法用于
SupportSQLiteLock
,因此必须妥善处理 null 文件的问题。(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
缺少一些可为 null 性注解,因此如果您的源代码使用 Kotlin 并且代码推断出的可为 null 性结果有误,您可能会遇到源代码不兼容错误。此外,某些 getter 方法已转换为需要在 Kotlin 文件中使用属性访问语法的属性。如果存在任何严重的不兼容问题,请提交 bug。(b/240707042) - 在
SupportSQLite's
的配置中添加了一个 API,以允许在恢复机制运行期间丢失数据。(I1b830、b/215592732) - 添加了用于多进程锁定的 API,支持在
FrameworkSQLite*
级别使用,以保护多进程首次数据库创建和迁移。(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 中包含这些提交内容。
bug 修复
- 解决了
SupportSQLiteQueryBuilder
中可为 null 的列出现的 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 缺少一些可为 null 性注解,因此如果您的源代码使用 Kotlin 并且代码推断出的可为 null 性结果有误,您可能会遇到源代码不兼容错误。如果存在任何严重的不兼容问题,请提交 bug。(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 变更
- 更新了可为 null 性 (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)
- 添加了用于多进程锁定的 API,支持在 FrameworkSQLite* 级别使用,以保护多进程首次数据库创建和迁移。(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 变更
- 向名为
useNoBackupDirectory
的SupportSQLiteOpenHelper.Configuration
添加了一个新属性,以指示应创建一个基于文件的数据库,并且该数据库应位于无备份目录中。
版本 2.0.1
版本 2.0.1
2019 年 3 月 13 日
发布了 androidx.sqlite
工件组的 2.0.1 版,该版本修复了两个 bug。
bug 修复
- 修复了
FrameworkSQLiteOpenHelper
无法从损坏的数据库正确恢复或在初始化期间出现错误迁移这两个问题。(b/111504749 和 b/111519144)