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

android - 使用 sqldelight 为 getter 和 setter 加前缀

是否可以将 sqldelight 配置为所有 getter 和 setter 的前缀?

酒吧() - > 获取酒吧()

0 投票
1 回答
175 浏览

android - Sqlite 插入行错误

我被困在一个非常奇怪的错误上。我有一个表追随者,当我插入数据时,除了我的第一个条目外,它都可以工作。

我第一次调用该函数时,没有抛出任何东西,并且插入函数按预期返回 1。但是当我调用全选函数时,表是空的。

但是,当我再次使用不同的参数调用该函数时,数据确实被插入,并且表格显示一个条目(这个条目),但 ID 为 2。

我正在使用 Sqldelight。

还有sqldelight生成的Follower.CREATE_TABLE

编辑 :

我注意到一些奇怪的东西可能会有所帮助:

这仅在表为空时有效

我插入了一个追随者,这不起作用。但是当我插入另一个与第一个具有相同 ID 的追随者时(有一个主键自动增量)。我得到一个 UNIQUE 异常,但表仍然是空的。

不要犹豫,询问更多信息。

谢谢你。

0 投票
1 回答
348 浏览

android - 关于 SQLBrite 和 SQLdelight 的 createQuery 使用问题

我使用 SQLdelight 创建 sql 代码,比如

我查询喜欢:

但结果是空的。然后,我像这样改变sqlcode

它返回我 3 个结果。为什么?

0 投票
1 回答
851 浏览

android - 如何将 sqldelight 中的新编译语句与 sqlbrite 一起使用?

由于我无法从 BriteDatabase 获取 SQLiteOpenHelper 实例,如何从我的模型中创建已编译的插入/更新/删除语句?返回 SqlDelightStatement 的方法在 SqlDelight 0.5.1 中被标记为已弃用。我正在使用 SqlBrite 0.8.0,我看到有一个BriteDatabase#executeInsert(String, SQLiteStatement)等等。

0 投票
1 回答
968 浏览

android - 如何在方形 sqldelight 中进行批量插入?

感谢 Square 提供 SQLDelight 并为 sqlite db 交互提供类型安全的 api。我正在执行单个插入行,如下所示:

有没有办法一次对数据列表执行批量插入?

0 投票
0 回答
62 浏览

java - 在 Android 中生成抽象类

我正在制作一个需要在线和本地数据库的应用程序。我有很多工作,但我有一个我需要为每个数据库表“设置”的东西的列表。

我正在使用 SQLDelight,所以我需要一个像这样的类(对于每个数据库表)

其中 {TableName} 应替换为每个表的名称。

对我来说,它看起来就像一个 for 循环,它将遍历我拥有的每个 .sq 文件的文件名(这些初始化我的数据库表和 {Tablename}Model 类 - 后者通过 SQLDelight),但我不知道如何实现这个.

0 投票
1 回答
551 浏览

android - SQLite 外键 | 不同的 SQ 文件

我有一个 Android 项目,其中包含一个用 SQLite 编写的本地数据库。存在一个 sqldelight 文件夹,其中包含数据库中每个表的 .sq 文件(User.sq、Routine.sq ...)。我能够访问/使用在我的项目中定义的表格和过程。

现在,我打算将外键关系添加到数据库中。但是,如果我尝试类似的东西 FOREIGN KEY (this_table_fk) REFERENCES OtherTable(other_table_pk),该项目将无法构建,因为我所在的 .sq 文件无法找到OtherTable从 OtherTable.sq 中的语句创建的表CREATE TABLE,或者通过扩展,它的列other_table_pk

如何允许 2 个不同的 .sq 文件“查看”另一个生成的表?

我尝试将 和 的 CREATE TABLE 语句ThisTable放在OtherTable同一个 .sq 文件中,但我得到mismatched input 'CREATE' expecting (<EOF>, IDENTIFIER, JAVADOC_COMMENT)了第二个 CREATE TABLE 语句。不过,我更希望有一个解决方案,将每个表保存在自己的 .sq 文件中。

谢谢。

基本展示ThisTable.sqOtherTable.sq

ThisTable.sq:

);

其他表.sq:

0 投票
1 回答
766 浏览

java - SqlDelight 没有为 SQL 语句生成 SQL 查询字符串

SqlDelight 文档中的示例中, HockeyPlayerModelSqlDelight 从HockeyPlayer.sq文件生成是在抽象类中实现的public abstract class HockeyPlayer implements HockeyPlayerModel

在这个类中,字符串SELECT_ALL_INFO作为查询传递给db.rawQuery(SELECT_ALL_INFO, new String[0]). 该字符串SELECT_ALL_INFO是由select_all_info里面的语句生成的HockeyPlayer.sq。但是,在我的情况下,我的语句没有生成字符串。为什么是这样?

我的声明

我对ExerciseSetModelSqlDelight 生成的实现

需要明确的是,在该行中找不到变量引用 NAMES_FOR_GROUPSdb.rawQuery(NAMES_FOR_GROUPS, new String[0])

0 投票
2 回答
786 浏览

android - 带有 SqlBrite/SqlDelight(离线数据库)和 Retrofit(Http 请求)的存储库模式

我正在使用 SqlBrite/SqlDelight 在 RxJava 中实现存储库模式,用于离线数据存储和 Http 请求的改造

这是一个示例:

当前实现用于Observable.amb获取最新的 2 个流并返回db流,以防db有数据或服务器。server为了防止在没有互联网的情况下提前失败,请delaySubscription使用200ms.

我尝试使用Observable.concat,但 SqlBrite 流从不调用onComplete,因此server永远不会触发可观察的。

我也尝试Observable.combineLatest了哪个不起作用,因为它server在发出任何东西之前一直等待 observable 返回数据并且Observable.switchOnNext也不起作用。

我正在寻找的是一个存储库,它:

  • 保持对 SqlBrite (DB) 的订阅处于打开状态,以防数据库更新
  • 始终从服务器获取数据并将其写入数据库
  • 如果数据库中没有任何内容并且网络请求仍在进行中,则不应发出空结果。这是因为用户应该在第一次加载的情况下看到一个进度条。
0 投票
1 回答
430 浏览

android - 设置 SQLDelight 的问题

我正在尝试在我的项目中使用 SQLDelight。就代码生成而言,一切似乎都运行良好。不幸的是,我不能使用/build/generated/source/sqldelight/...在我的项目中生成的接口。当我尝试创建一个实现生成模型的类时,它会用错误加下划线cannot resolve symbol 'InterfaceName'。我准备了一个示例项目来展示我的问题。任何帮助让它工作当然非常感谢。