问题标签 [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 回答
1457 浏览

android - 将 sqldelight 的“未解决的参考:NativeSqliteDriver”添加到 ios 源集

我正在从事 kotlin 多平台项目。我成功地将几个库添加到我的 build.gradle(ktor、协程......)。我还将 sqldelight 添加到 common、android 和 ios 源集。我的 ios 依赖项是这样定义的:

Gradle 说一切都很好。android编译代码:

}

ios 的代码没有,它没有找到“NativeSqliteDriver”:

}

我尝试使用旧版本的 com.squareup.sqldelight,但没有帮助。如何调试这个东西?

编辑:我共享的 build.gradle:

Kotlin 版本是 1.3.72

0 投票
0 回答
171 浏览

android - SQLDelight 模式生成失败

我在 Android 上使用 SQLDelight 并开始阅读有关SQLDelight 的 Gradle DSL 的信息,以便我可以生成数据库模式并为小型迁移做准备。

我一直在使用几乎所有默认配置,所以我将这个非常小的sqldelight块添加到我的build.gradle

添加此块后,我注意到generate*DatabaseSchema任务按预期显示在我的 Gradle 任务列表中。但是,当我运行该generateDebugDatabaseSchema任务时,它始终失败并出现以下异常:

sqldelight为了使事情正常工作,我还需要在块中包含更多内容吗?可以sqldelight单独使用,还是需要将其移到androidbuildscript或构建文件的其他部分中才能正常工作?

0 投票
0 回答
323 浏览

mysql - 我们如何为使用 SQLDelight 的应用程序编写单元测试?

我正在编写一个 Kotlin JVM 应用程序,它使用 SQLDelight 生成需要与 MySQL 数据库交互的类。

如何为使用 SQLDelight 库生成的类的类/服务编写单元测试?

例如,SQLDelight 生成的接口如下:

在我的应用程序的某个地方,我有myService.findAllAddressForName(name: String),它会做类似的事情someDB.someTableQueries.querySomething(name)

那么单元测试的最佳方法是什么myService.findAllAddressForName

如果我需要使用Mockitoor之类的库mockito-kotlin,我应该模拟哪些类?我有没有更好的方法来为这些编写测试?谢谢。

0 投票
2 回答
526 浏览

kotlin - ALTER TABLE 迁移不会更新生成的代码

我正在编写一个更改表的迁移文件,添加一个新列,但生成的代码没有更新,所以我无法将新记录插入到新列的值中。

例子:

添加该列后,生成的代码似乎没有更新。例如,insert函数不会更新以接收新添加到表中的列,并且内部生成的 Kotlin 代码不会更新为新列。

有没有办法绕过这个问题?

0 投票
2 回答
865 浏览

kotlin - SQLDelight:Kotlin Multiplatform App 中未解决的参考 AndroidSqliteDriver

我尝试将 sqldelight 添加到我的 Kotlin 多平台应用程序中,但 AndroidSqliteDriver 未解析参考。我不明白为什么。我清除缓存并重新生成所有内容,但它也不起作用。

AndroidSqlite驱动程序:

build.gradle(通用):

构建.gradle(安卓):

build.gradle(项目):

我使用: gradle: 6.1.1 gradle plugin: 4.0.1 kotlin: 1.3.72 upd: 添加代码

0 投票
1 回答
123 浏览

sqldelight - 不是从迁移中生成的查询

我在 Android 上使用 sqldelight 1.4.1。

如果我想在我的应用程序的第二次迭代中添加表格,我应该把CREATE TABLE Preset(blabla)代码放在哪里?如果我把它放在 1.sqm 中,则不会生成查询,只会fun migrate(...)生成代码。没有为Preset类生成代码,也没有为查询该特定数据库的查询生成代码。

我无法在 Preset.sq 中添加它,因为它在我查询 Presets 时在运行时崩溃,因为该表在应用程序首次运行时不存在(因为第一个版本没有它)。

0 投票
1 回答
365 浏览

android-studio - 无法从 sqldelight v1.4.1 访问生成的数据库类

每次我将我的项目导入 android Studio 4.0.1。它显示该错误,我无法从 commonMain 包访问对象,它仅适用于 iosMain 包。

0 投票
2 回答
861 浏览

sql - SQLdelight 删除所有表

我在 Kotlin/Native 项目(iOS 和 Android)中使用 SQLDelight,我正在寻找删除数据库(所有表)的最佳方法。 用户案例:使用从应用程序中注销。所以,我一直在寻找一种方法来擦除所有表中的数据。到目前为止,我尝试了这个,但我无权访问sqlite_master表:

错误:No table found with name sqlite_master

删除所有表格的最佳方法是什么SQLDeligth(我想避免写DROP TABLE每张桌子)

此外,upsert {似乎对我也不起作用..不知道如何提供label它。

0 投票
1 回答
73 浏览

sqldelight - SQLDelight FTS5 插入问题

我在 DBBrowser 中创建了一个表:

并向其插入值。之后,我将带有此表的数据库添加到我的项目中。

它是 sqldelight .sq 文件中该表的声明:

我需要显式声明排名,因为我想在从表中选择时应用 HAVING MIN(rank) (否则它不会编译),但是当我尝试在表中插入值时:

我收到一个错误:

插入的值数量意外。找到:2 预期:3

如果我这样做:

我收到一个例外:

SQLiteException - 表 Student 有 2 列,但提供了 3 个值(代码 1):,编译时:INSERT INTO Students VALUES (?,?,?)

我如何执行插入?或者也许我可以在没有明确声明的情况下应用 HAVING MIN(rank)?

0 投票
2 回答
455 浏览

sql - 使用 id 更新或添加值

我只是在学习 SQLDelight,并希望找到如何添加一个带有 ID 的对象,如果它不存在,如果它确实存在,然后用给定的 ID 更新该当前对象。

目前,我正在删除带有 id 的当前对象,然后添加一个对象,并希望将其简化为一个简单的调用。

我当前的代码:

我希望将其更改为替换saveColordeleteColorWithId使用以下内容:

但它不适用于此错误<insert stmt values real> expected, got 'WHERE'

谁能帮忙?我在文档中找不到任何内容。