问题标签 [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 投票
0 回答
36 浏览

postgresql - 检查 SQLDelight (PostgreSQL) 中的数组参数是否不为空

我已经用 PostgreSQL 测试了这个选择,它似乎工作正常 - 返回一个带有 resourceId 的项目列表:resourceIdList(如果有的话)。如果:resourceIdList为 null - 则返回所有这些。

当我尝试在SqlDelight中使用它时会出现问题:生成的代码有问题when :resourceIdList is not nullencodefun 需要 T 类型,而不是 List) 在此处输入图像描述

有没有另一种方法来检查语句:resourceIdList之前是否为空/空?IN

0 投票
0 回答
109 浏览

sqldelight - SQLDelight 批量插入列表

我在使用 SQLDelight 插入许多行时遇到问题。我不确定查询是死锁还是只需要几分钟。我在两个不同的表中插入大约 10k 行。

两者都有一个.sq文件,如:

我的插入:

0 投票
1 回答
54 浏览

kotlin-multiplatform - 我应该将我的包名用于 KMM SqlDelight 配置吗?

我正在遵循本指南,在此步骤的第一部分中,我必须执行以下操作:

问题是,我应该使用.handson.还是.myPackageName.为什么?

0 投票
1 回答
53 浏览

kotlin-multiplatform - 使用字符串作为 id

我正在使用 SQLDelight 作为缓存制作 KMM 应用程序,最近我将数据库实体更改为使用 Text(String) 作为 id 字段而不是 Int,现在插入时出现错误,我可能只是缺少一些 sqlDelight 知识

这是我的桌子:

这是我的插入方法:

这是我的错误:

我认为这很可能是我在 id 字段上设置的主键或类似的东西,但文档有点短。

0 投票
1 回答
34 浏览

android - 为什么 long packageName 会在作为量词导入之前导致换行?

在我的 Android 多模块项目中,我有: 模块 A:

模块 B:

在构建期间,当编译器SomeExampleDb为模块 B 生成接口时,它会导致这样的导入:

(后面有换行符as)导致这样的错误:

当 packageName 较短时,一切正常。在构建过程中是否以任何方式考虑了最大行长度?

SQLDelight 版本

1.5.2

操作系统

macOS 大苏尔 11.2.3

摇篮版本

7.2

Kotlin 版本

1.5.30

AGP版本

7.0.3

0 投票
1 回答
205 浏览

android - 未解决的参考:添加依赖项后 iosMain 目录中的 squareup

我正在尝试在适用于 android 和 iOS 的 Kotlin Multiplatform 项目中使用 SQLDelight。我已按照此处找到的文档进行操作。该项目成功构建,但我无法访问 com.squareup.* shared/iosMain 文件夹中的任何位置。下面是我的代码文件。

项目/build.gradle.kts:

项目/共享/build.gradle.kts:

项目/shared/src/commonMain/kotlin/com/example/sam/data/db/DatabaseDriverFactory.kt

项目/shared/src/androidMain/kotlin/com/example/sam/data/db/DatabaseDriverFactory.kt

我遇到问题的文件 - Project/shared/iosMain/kotlin/com/example/sam/data/db/DatabaseDriverFactory.kt

它找不到 SqlDriver、NativeSqliteDriver 甚至 com.squareup.*。

我已经搜索了网络,但没有找到任何帮助。

0 投票
1 回答
37 浏览

android - Android Studio - 数据库检查器未显示任何进程

我有一个带有 SQLDelight 数据库的 android 项目,但是在我在任何设备或模拟器(即模拟器 Pixel 4,API 28)上运行应用程序后,我遇到了一个问题,即数据库检查器下没有显示该进程。请注意,在 logcat 中,模拟器和进程和日志显示良好,并且同一个项目正在为其他项目显示进程。我尝试使缓存无效并重新启动,它仍然是一样的。我的 android studio 版本是:4.2.2

在此处输入图像描述

0 投票
0 回答
43 浏览

unit-testing - 如何为 SQLDelight 数据库编写单元测试?

我正在尝试测试 SQLDelight 中的插入。这是我的测试

这会导致断言失败:

我知道查询是正确的,因为我在设置函数中插入了物理钱包并且它运行良好。这是设置的摘录:

我应该如何为此编写测试?

这是现阶段我的 github 存储库的链接:https ://github.com/hardiksachan/Ledger/tree/9e96fd1c21fb1303987082465b81f467e8b699ed

0 投票
2 回答
58 浏览

kotlin - 使用流时 SQLDelight 转换查询返回类型

我想在我的应用程序中使用 SQLDelight 作为缓存层和协程扩展,以从我的 SQL 查询中返回一个流,并在本地数据库中的条目发生更改时得到通知。
但是因为 SQLDelight 为存储的实体生成它自己的类并在流中发出它们,所以我无法将存储的类转换为在我的应用程序的其余部分使用的类。

您可以在下面找到我的FriendEntitySQL 类型和查询函数的摘录,SQLDelight 使用它来生成FriendEntity数据类和 kotlin 函数(问题底部的生成输出)

下面我想创建一个缓存服务,它也发出一个flow但类型Friend而不是FriendEntity所以我必须以某种方式将FriendEntity类转换为我的Friend类,同时仍然返回一个流。
如果不先收集流量,这是否可能?

由 SQLDelight 生成:

0 投票
0 回答
22 浏览

android - SQLDelight 安卓/ios 。不区分大小写的选择

我在我的 kotlin 多平台应用程序中使用 SQLDelight。它工作正常。但我发现不区分大小写的选择请求存在问题。它不适用于 iOS。

我使用本教程将 SQLDelight 集成到我的应用程序https://kotlinlang.org/docs/kmm-configure-sqldelight-for-data-storage.html中。

我有这样的查询

在 SQLDelight 文件中,它被描述为

我需要对所有 char 案例进行此选择工作。它在 Android 上运行良好。但它不适用于iOS。选择区分大小写。

我尝试了网络上的技巧

它在androidn上仍然可以正常工作,但在iOS上却不行。

笔记。我用非拉丁文本测试 - 用西里尔字母

我怎样才能让它在iOS上工作?也许它与编码有关?

更新 1。我发现建议使用特殊的 pragme 让它工作。

但这不影响。它也破坏了 androd 选择(不知道为什么,似乎内部 sqlite 使用了一些不同的 LIKE 函数)

更新 2。我还尝试将 COLLATE NOCASE 添加到查询的末尾。它在iOS上也不起作用

更新 3。最后,我发现在 iOS 上的 select 排序也不起作用!但也许这仅适用于非拉丁文本。我的数据是 cirylic 字母(乌克兰语)。