问题标签 [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.
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
android - SQLDelight 模式生成失败
我在 Android 上使用 SQLDelight 并开始阅读有关SQLDelight 的 Gradle DSL 的信息,以便我可以生成数据库模式并为小型迁移做准备。
我一直在使用几乎所有默认配置,所以我将这个非常小的sqldelight
块添加到我的build.gradle
:
添加此块后,我注意到generate*DatabaseSchema
任务按预期显示在我的 Gradle 任务列表中。但是,当我运行该generateDebugDatabaseSchema
任务时,它始终失败并出现以下异常:
sqldelight
为了使事情正常工作,我还需要在块中包含更多内容吗?可以sqldelight
单独使用,还是需要将其移到android
、buildscript
或构建文件的其他部分中才能正常工作?
mysql - 我们如何为使用 SQLDelight 的应用程序编写单元测试?
我正在编写一个 Kotlin JVM 应用程序,它使用 SQLDelight 生成需要与 MySQL 数据库交互的类。
如何为使用 SQLDelight 库生成的类的类/服务编写单元测试?
例如,SQLDelight 生成的接口如下:
在我的应用程序的某个地方,我有myService.findAllAddressForName(name: String)
,它会做类似的事情someDB.someTableQueries.querySomething(name)
。
那么单元测试的最佳方法是什么myService.findAllAddressForName
?
如果我需要使用Mockito
or之类的库mockito-kotlin
,我应该模拟哪些类?我有没有更好的方法来为这些编写测试?谢谢。
kotlin - ALTER TABLE 迁移不会更新生成的代码
我正在编写一个更改表的迁移文件,添加一个新列,但生成的代码没有更新,所以我无法将新记录插入到新列的值中。
例子:
添加该列后,生成的代码似乎没有更新。例如,insert
函数不会更新以接收新添加到表中的列,并且内部生成的 Kotlin 代码不会更新为新列。
有没有办法绕过这个问题?
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: 添加代码
sqldelight - 不是从迁移中生成的查询
我在 Android 上使用 sqldelight 1.4.1。
如果我想在我的应用程序的第二次迭代中添加表格,我应该把CREATE TABLE Preset(blabla)
代码放在哪里?如果我把它放在 1.sqm 中,则不会生成查询,只会fun migrate(...)
生成代码。没有为Preset
类生成代码,也没有为查询该特定数据库的查询生成代码。
我无法在 Preset.sq 中添加它,因为它在我查询 Presets 时在运行时崩溃,因为该表在应用程序首次运行时不存在(因为第一个版本没有它)。
android-studio - 无法从 sqldelight v1.4.1 访问生成的数据库类
每次我将我的项目导入 android Studio 4.0.1。它显示该错误,我无法从 commonMain 包访问对象,它仅适用于 iosMain 包。
sql - SQLdelight 删除所有表
我在 Kotlin/Native 项目(iOS 和 Android)中使用 SQLDelight,我正在寻找删除数据库(所有表)的最佳方法。
用户案例:使用从应用程序中注销。所以,我一直在寻找一种方法来擦除所有表中的数据。到目前为止,我尝试了这个,但我无权访问sqlite_master
表:
错误:No table found with name sqlite_master
删除所有表格的最佳方法是什么SQLDeligth
?(我想避免写DROP TABLE
每张桌子)
此外,upsert {
似乎对我也不起作用..不知道如何提供label
它。
sqldelight - SQLDelight FTS5 插入问题
我在 DBBrowser 中创建了一个表:
并向其插入值。之后,我将带有此表的数据库添加到我的项目中。
它是 sqldelight .sq 文件中该表的声明:
我需要显式声明排名,因为我想在从表中选择时应用 HAVING MIN(rank) (否则它不会编译),但是当我尝试在表中插入值时:
我收到一个错误:
插入的值数量意外。找到:2 预期:3
如果我这样做:
我收到一个例外:
SQLiteException - 表 Student 有 2 列,但提供了 3 个值(代码 1):,编译时:INSERT INTO Students VALUES (?,?,?)
我如何执行插入?或者也许我可以在没有明确声明的情况下应用 HAVING MIN(rank)?
sql - 使用 id 更新或添加值
我只是在学习 SQLDelight,并希望找到如何添加一个带有 ID 的对象,如果它不存在,如果它确实存在,然后用给定的 ID 更新该当前对象。
目前,我正在删除带有 id 的当前对象,然后添加一个对象,并希望将其简化为一个简单的调用。
我当前的代码:
我希望将其更改为替换saveColor
并deleteColorWithId
使用以下内容:
但它不适用于此错误<insert stmt values real> expected, got 'WHERE'
谁能帮忙?我在文档中找不到任何内容。