Sqlite

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

您可能需要考虑使用 Room 库,它提供了 SQLite 之上的抽象层,可实现更强大的数据库访问,同时充分利用 SQLite 的强大功能。

最新更新 稳定版 发布候选版 Beta 版 Alpha 版
2025 年 5 月 7 日 2.5.1 - - -

声明依赖项

要添加对 SQLite 的依赖,您必须将 Google Maven 仓库添加到您的项目中。阅读Google 的 Maven 仓库以获取更多信息。

在您的应用或模块的 build.gradle 文件中添加所需工件的依赖项

Groovy

dependencies {
    def sqlite_version = "2.5.1"

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

    // 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.1

2025 年 5 月 7 日

androidx.sqlite:sqlite-*:2.5.1 已发布。版本 2.5.1 包含这些提交

API 变更

  • 允许 androidx.sqlite:sqlite-bundled 通过名为 androidx.sqlite.driver.bundled.path 的系统属性从指定路径加载其原生组件。b/381282544

版本 2.5.0

2025 年 4 月 9 日

androidx.sqlite:sqlite-*:2.5.0 已发布。版本 2.5.0 包含这些提交

自 2.4.0 以来的重要变更

  • Kotlin 多平台 (KMP) 支持: 随着 Room KMP 版本 2.7.0 的发布,使 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.5.0-rc03

2025 年 3 月 26 日

androidx.sqlite:sqlite-*:2.5.0-rc03 已发布。版本 2.5.0-rc03 包含这些提交

Bug 修复

  • 回滚一个二进制破坏性的不兼容变更,该变更错误地移除了 Room 等其他库使用的 SupportSQLiteCompat API(b/402796648)。

版本 2.5.0-rc02

2025 年 3 月 12 日

androidx.sqlite:sqlite-*:2.5.0-rc02 已发布,自上次发布以来没有显著变化。版本 2.5.0-rc02 包含这些提交

版本 2.5.0-rc01

2025 年 2 月 26 日

androidx.sqlite:sqlite-*:2.5.0-rc01 已发布。版本 2.5.0-rc01 包含这些提交

Bug 修复

  • 修复 JVM 的 androidx.sqlite 工件的 Gradle 元数据,该元数据会导致 JVM 项目解析 Android 变体,并导致 NoClassDefFoundError: androidx/sqlite/SQLiteDriverb/396148592b/396184120)。

版本 2.5.0-beta01

2025 年 2 月 12 日

androidx.sqlite:sqlite-*:2.5.0-beta01 已发布,自上次 alpha 版以来没有显著变化。版本 2.5.0-beta01 包含这些提交

版本 2.5.0-alpha13

2025 年 1 月 29 日

androidx.sqlite:sqlite-*:2.5.0-alpha13 已发布。版本 2.5.0-alpha13 包含这些提交

API 变更

  • 移除 androidx.sqlite.use,现在由 Kotlin 标准库中的 AutoCloseable.use 取代。(I470f0, b/315461431
  • 该库现在使用 Kotlin 2.0 编译,在项目中至少需要 2.0 才能使用。(I8efb0, b/315461431, b/384600605

Bug 修复

  • BundledSQLiteDriver 的原生库加载移动到延迟加载,并在首次打开连接时进行,以避免在主线程中执行 IO 的可能性。(I78e92, b/363985585

版本 2.5.0-alpha12

2024 年 12 月 11 日

androidx.sqlite:sqlite-*:2.5.0-alpha12 已发布。版本 2.5.0-alpha12 包含这些提交

版本 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_* 结果常量,以实现检索列的数据类型。(I1985c, b/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 / Desktop 目标中添加对 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)。

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 的接口: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.0 已发布。版本 2.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-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 查询在迁移期间的 schema 更改后不会失效。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 缺少一些可空性注解,如果您的源代码是 Kotlin 并且代码推断了错误的可空性,您可能会遇到源代码不兼容错误。此外,某些 getter 方法已转换为属性,需要 Kotlin 文件上的属性访问语法。如果存在任何显著不兼容,请提交错误。(b/240707042
  • SupportSQLite 的配置中添加一个 API,以允许在恢复机制期间丢失数据。(I1b830, b/215592732
  • FrameworkSQLite* 级别添加了多进程锁和使用 API,以保护多进程首次数据库创建和迁移。(Ied267, b/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 中可空列的 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 包含这些提交。

  • 修复了各种接受查询参数的 API,从不变式 (Array<Any?>) 更改为逆变式 (Array<out Any?>) 以匹配 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 变更

  • 更新了可空性(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,以允许在恢复机制期间丢失数据。(I1b830, b/215592732
  • 在 FrameworkSQLite* 级别添加了多进程锁和使用 API,以保护多进程首次数据库创建和迁移。(Ied267, b/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() 的默认方法(I86326, b/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 日

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

Bug 修复

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