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。如果您发现新的问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中 现有问题。您可以通过点击星形按钮为现有问题添加您的投票。

创建新的问题

有关更多信息,请参阅 问题跟踪器文档

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 的一个问题,该问题会导致用它创建的数据库包含 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 驱动程序 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-rc012.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 的配置中添加了一个 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-rc012.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 变更

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 更改

  • SupportSQLiteOpenHelper.Configuration 中添加了一个名为 useNoBackupDirectory 的新属性,用于指示应从非备份目录创建和定位基于文件的数据库。

2.0.1 版本

2.0.1 版本

2019 年 3 月 13 日

2.0.1 版本的 androidx.sqlite 工件组已发布,其中包含两个错误修复。

错误修复

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