问题标签 [sqldelight]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2048 浏览

android - kotlinx.serialization.SerializationException:找不到类“UnitEntity”(myClassName)的序列化程序

我正在开发一个 Kotlin 多平台项目,但遇到了保存数据库实体对象的问题。当我调用我的 sqldelight dao 类的插入方法时抛出异常

该示例类是生成的实体类

这是 DAO 类:

当我尝试调用该保存方法时,它崩溃并说将该类标记为@Serializable,我不明白它为什么这么说,因为它是一个生成的类,我无法修改这些类。

这是我如何尝试保存这些实体的片段

图书馆:

这是由生成的实际entities和保存方法SqlDelight

资源实体类

UnitEntity.class

保存方法

0 投票
1 回答
376 浏览

sqldelight - 我可以在同一个项目中将 sqldelight 与不同的数据库一起使用吗?

我想使用 SQLDelight 连接到 SQLite In-Memory 数据库进行测试并连接到 PostgreSQL 服务器进行生产,这种用例可能吗?我怎么能做配置?我是否需要为每个数据库提供 .sq 文件?

0 投票
1 回答
1434 浏览

android - 与 Room 相比,SQLDelight 性能较慢

我们想将我们的 App 从 Room 迁移到 SQLDelight,以便在 iOS 上重用它(它是一个多平台项目)。然而,我注意到 SQLDelight 比 Room 慢得多。对于某些查询,它慢了大约 10 倍。我使用插入语句进行了一些深入测试,使用 Room 平均需要约 5 毫秒,使用 SQLDelight 平均需要约 25 毫秒。我检查(并调整)查询,使它们完全相同。

我还检查了一些 PRAGMA,发现 SQLDelight 使用 Pragma SYNCHRONOUS=1 (NORMAL) 而 Room 使用 2 (FULL),SQLDelight 使用 JOURNAL_MODE=TRUNCATE 而 Room 使用 WAL。我将 SQLDelight 设置中的这些设置更改为与 Room 相同,并且性能有所提高,但对于上述测试来说仍然约为 20 毫秒。

有谁知道是什么导致了这种差异?任何帮助表示赞赏。

0 投票
4 回答
890 浏览

unit-testing - 如何在 KMM 上为 SQLDelight 编写单元测试

我想知道如何在KMM上为SQLDelight编写单元测试。首先,我什至无法正确添加SQLDelight依赖项。

在我添加依赖项然后同步项目后,项目甚至没有构建。有人可以告诉我这是否是添加 sqlite 驱动程序依赖项的正确方法吗?

任何帮助将不胜感激!

0 投票
0 回答
73 浏览

android - 使用 SQLDelight 时指定初始数据库版本

我们正在从 Android 平台迁移SQLiteDatabase/SQLiteOpenHelper以使用 SQLDelight。我们的第一个公共数据库版本是17. 默认情况下,SQLDelightSchema返回1. version我能够找到强制version执行的唯一方法17是提供一个空的16.sqm迁移文件。这是执行此操作的正确方法,还是有更好的方法?

0 投票
1 回答
792 浏览

android - Sqldelight 1.4 如何在没有主键(id)的情况下插入填充数据生成对象

我在 Android 应用程序中将数据保存到 sqldelight 1.4 时遇到问题。

我创建了表:

在 repo 类中,我有以 myTable 对象作为参数的插入函数

在某些操作中,我尝试创建具有名称但没有 id 的新对象表,因为 id 是自动递增的。我没有找到任何信息如何做到这一点。哪个是最好的解决方案?

  1. 新建一个类(myTablexpress),参数和数据类(myTable)一样,在repo类的insert函数的参数中使用这个对象,使用这些参数?
  2. 不在动作类中创建新的 myTable 实例,而是使用插入函数并将字符串值作为参数?
  1. 创建没有 id 的新类 myTable

并在视图模型中使用参数?

  1. 他们都没有

谢谢

0 投票
1 回答
181 浏览

android-studio - sqldelight Generation 的 Gradle 构建失败,第 17:10 行 - '{' 预期,得到 ':' Android Studio 版本 4.1.2

我正在将一个正常工作的 Android Studio 应用程序转换为 KMM 环境。至此,我有了一个非常简单的 KMM 框架。一旦我添加SQLDelight到公共包中,我开始在我的构建中收到以下错误。我检查了我能找到的每一个例子,但看不出有什么问题。如果可以的话请帮忙?

这是错误消息:

生成失败;有关详细信息,请参阅生成器错误输出任务:shared:generateAndroidDebugPicturesDBInterface FAILED WARN:已访问注册表项“psi.track.invalidation”,但尚未加载

警告:已访问注册表项“psi.incremental.reparse.depth.limit”,但尚未加载

警告:已访问注册表项“ide.hide.excluded.files”,但尚未加载

C:/Users/pagel/AndroidStudioProjects/DailyNasa/shared/src/commonMain/sqldelight/com/pagetyler/shared/cache/Pictures.sq 行 17:10 - '{' 预期,得到 ':' 17:

任务 ':shared:generateAndroidDebugPicturesDBInterface' 执行失败。生成失败;有关详细信息,请参阅生成器错误输出。`

它无法处理应该用来生成表和查询的 .sq 文件。当它在指定第一个查询标签后遇到文件中的第一个“:”时。这是 .sq 文件脚本。getAllPict:在指定的第一个查询标签之后构建失败。

这是 .sq 文件

直到第一个错误的新版本。更新 2020-3-5 相同的结果

0 投票
1 回答
201 浏览

kotlin-multiplatform - SQLDelight:如何动态创建表?

sq我看到了我们可以使用这样的文件创建具有固定名称的表的示例

我需要在运行时创建具有任意名称的表,我该如何实现?

UPD

在这种情况下,我似乎必须手动执行所有查询(就像在生成的类中完成的那样)

0 投票
1 回答
730 浏览

android - SQLDelight 迁移

我正在尝试在 SQLDelight 的表中添加更多列。我制作了一个迁移文件1.sqm。在迁移文件中,它给出了找不到表的错误。在此处输入图像描述

我的 build.gradle.kts:

创建表语句:

0 投票
0 回答
78 浏览

sqldelight - SQLDelight 没有创建查询类

我对使用 Kotlin 的 AndroidStudio 上的 SQLDelight 有一个奇怪的问题。

我编写了我的 .sq 文件,SQLDelight 创建了所有必要的接口、查询、数据类……除了一个查询之外,再多的重新配置似乎也无济于事。

我尝试了什么:

  • 清理项目,重建项目

  • 其他版本的 SQLDelight

  • 在 gradle 中玩弄依赖项的加载顺序

  • 重命名 .sq 文件

下面附上项目结构和有问题的查询:

生成除 selectSubSections 之外的所有查询,我不知道为什么。

也许有人可以帮忙,因为坦率地说我很绝望 在此处输入图像描述