Sqlite

androidx.sqlite 库包含抽象接口和基本实现,可用于构建自己的库来访问 SQLite。

您可能想要考虑使用 Room 库,它在 SQLite 上提供了一个抽象层,让您能够在充分利用 SQLite 的强大功能的同时,获享更完善的数据库访问机制。

最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2023 年 10 月 18 日 2.4.0 - - -

声明依赖项

如需添加 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.4

版本 2.4.0

2023 年 10 月 18 日

发布了 androidx.sqlite:sqlite:2.4.0androidx.sqlite:sqlite-framework:2.4.0androidx.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-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-beta01版本 2.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-alpha03版本 2.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-alpha01版本 2.4.0-alpha01 中包含这些提交内容

bug 修复

  • 修复了可能出现在 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.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.0androidx.sqlite:sqlite-framework:2.3.0androidx.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,以允许在恢复机制运行期间丢失数据。(I1b830b/215592732
  • 添加了用于多进程锁定的 API,支持在 FrameworkSQLite* 级别使用,以保护多进程首次数据库创建和迁移。(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 中包含这些提交内容

bug 修复

  • 解决了 SupportSQLiteQueryBuilder 中可为 null 的列出现的 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-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-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 缺少一些可为 null 性注解,因此如果您的源代码使用 Kotlin 并且代码推断出的可为 null 性结果有误,您可能会遇到源代码不兼容错误。如果存在任何严重的不兼容问题,请提交 bug。(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 变更

  • 更新了可为 null 性 (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
  • 添加了用于多进程锁定的 API,支持在 FrameworkSQLite* 级别使用,以保护多进程首次数据库创建和迁移。(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.0版本 2.2.0 中包含这些提交内容

自 2.1.0 以来的重要变更

SupportSQLiteDatabase 中为 execPerConnectionSQL() 添加了默认方法。

版本 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-beta01版本 2.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-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-alpha01androidx.sqlite:sqlite-framework:2.2.0-alpha01androidx.sqlite:sqlite-ktx:2.2.0-alpha01版本 2.2.0-alpha01 中包含这些提交内容

API 变更

  • 在 SupportSQLiteDatabase 中添加了 execPerConnectionSQL() 的默认方法(I86326b/172270145

版本 2.1.0

版本 2.1.0

2020 年 1 月 22 日

发布了 androidx.sqlite:sqlite:2.1.0androidx.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-rc01版本 2.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-alpha01版本 2.1.0-alpha01 中包含这些提交内容

API 变更

  • 向名为 useNoBackupDirectorySupportSQLiteOpenHelper.Configuration 添加了一个新属性,以指示应创建一个基于文件的数据库,并且该数据库应位于无备份目录中。

版本 2.0.1

版本 2.0.1

2019 年 3 月 13 日

发布了 androidx.sqlite 工件组的 2.0.1 版,该版本修复了两个 bug。

bug 修复

  • 修复了 FrameworkSQLiteOpenHelper 无法从损坏的数据库正确恢复或在初始化期间出现错误迁移的两个问题。(b/111504749b/111519144