问题标签 [sqlbrite]

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 回答
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 回答
578 浏览

android - 使用 SQLBrite + Retrofit 刷新数据

这是我的用例:

我正在开发一个应用程序,它通过 REST API 与服务器通信,并将接收到的数据存储在 SQLite 数据库中(它使用它作为某种缓存)。

当用户打开屏幕时,必须发生以下情况:

  1. 如果可用,则从数据库加载数据。
  2. 应用调用 API 刷新数据。
  3. API 调用的结果被持久化到数据库中。
  4. 当数据更改通知被拦截时,数据会从数据库中重新加载。

这与此处介绍的情况非常相似,但略有不同。

由于我使用的是 SQLBrite,因此 DB observables 不会终止(因为那里有一个ContentObserver注册,它将新数据推送到流中),所以像这样的方法concatmerge不起作用。

目前,我已经使用以下方法解决了这个问题:

看起来它工作正常,但它看起来并不优雅和“正确”。

您能否建议或指出一个资源来解释处理这种情况的最佳方法是什么?

0 投票
1 回答
144 浏览

android - 使用 SqlBright 关闭数据库连接

我正在将以下访问 Android 应用程序的 SQLite 数据库的模式迁移到 RxJava 世界中:

我正在苦苦挣扎的是什么时候应该关闭数据库连接?我知道有一些模式根本不关闭连接以及关闭连接作为 Activity 方法的一部分。但是,这些模式需要我将逻辑应用于整个数据库管理器类,如果可能的话,我想避免这种情况。希望可能有一种建议的方法来使用 RxJava 尤其是 SqlBright 包装器来处理这个问题?我迁移的代码如下所示:

理想情况下,我所追求的解决方案应该允许我更改这一种方法,将其余的方法保持在当前的打开/关闭模式。

0 投票
1 回答
392 浏览

android - 使用 RxAndroid 过滤数据库项目的正确方法

我正在使用提供的示例,并根据我的要求调整了代码。我正在学习 Rx,但并不完全熟悉它的工作原理。所以,在我的片段中,我有

我的 onResume 看起来像:

适配器在列表视图中显示数据,它工作正常,但现在我在列表顶部添加了一个 TextView,并且希望在用户输入文本时过滤结果。我相信 RxAndroid 提供了一个 debounce 运算符来提高效率(而不是立即查询数据库),但我不确定如何结合这个订阅代码来监听 textView 的变化并根据该文本进行过滤。

我已经尝试将 LIST_QUERY 更改为"SELECT * FROM " + TodoItem.TABLE + " WHERE " + TodoItem.DESCRIPTION + " LIKE \"" + query + "\" LIMIT 5”;

然后在尝试:

这导致列表为空(我认为这没关系,因为初始查询是空字符串)但是当我输入一些文本时,查询根本没有更新/过滤列表。

我尝试了另一种方法,并在 mapToList 之后添加了 take(5) (因为我想要 LIMIT 5),这有效并且只显示了 5 个项目。然后我添加了 .filter(,输入 new 并让 Android Studio 生成 Func1 代码,它看起来像:

所以问题是它要求我过滤整个列表。我试过这个:

但是仍然显示整个列表,并且文本中的更改根本不会使列表发生变化。我相信我错过了一些东西,我必须订阅 EditText 但我不确定我将如何做到这一点并将其与现有的数据库订阅代码结合起来。寻找解决方案。

0 投票
2 回答
566 浏览

android - SqlBrite 不能使用 AndroidSchedulers.mainThread()

我是使用 sqlbrite、rxjava 的初学者。因此,我必须在 UI 线程上运行一些代码(具体来说,从更新的 db SELECT 查询中获得的游标在地图上添加一些标记)。

这是我的开始设置:

但是,当我想做这个时:

它给了我一个 AndroidSchedulers.mainThread 方法的错误:

在我的 gradle 中,我有这个与 sqlbrite、rxjava 相关的内容:

和retrolambda。如何正确设置?如果没有 rxandroid 和 rxjava,我将无法使用 AndroidSchedulers.mainThread()。

0 投票
1 回答
55 浏览

android - 将 PreparedStatement 与 Sqlbrite 一起使用

我正在迁移所有与 sql 相关的代码以使用 Sqlbrite。目前我的代码看起来像这样:

现在我需要使用SqlBrite,但我想使用Prepared Statement。有什么办法可以做到这一点吗?我用谷歌搜索了“SqlBrite PreparedStatement”,但找不到任何关于此的内容。

0 投票
1 回答
1796 浏览

android - pthread_create 失败:无法分配 1064960 字节堆栈:内存不足

我有两个片段,在这两个片段中,它将执行利用 sqlbrite 的代码。虽然应用程序在正常使用中不会崩溃,但问题是,如果我在短时间内多次来回加载这两个片段,应用程序将因此错误而崩溃。

其中一个片段有大约 50 个 Observable,然后使用 Observable.combineLatest 进行组合。这是片段的代码片段(另一个片段有类似的代码)。下面基本上是我的代码的简化版本。

下面是 DbHelper 类的样子。请注意,我只显示一个被调用函数的代码..另一个函数几乎相同(当然查询除外)..

谁能指出我哪里出错了?

0 投票
1 回答
171 浏览

android - 可观察对象中的光标未在方向更改时关闭

在严格模式下运行时,当手机的方向发生变化时,我的应用程序将因错误而崩溃

在附加的堆栈跟踪中获取了资源,但从未释放。有关避免资源泄漏的信息,请参阅 java.io.Closeable。java.lang.Throwable:未调用显式终止方法“关闭”

奇怪的是,如果我在调试模式下运行应用程序并在所有 cursor.close() 处放置断点只是为了确保它实际上被命中,所有断点都会被命中并且应用程序永远不会崩溃。

这是我的片段,它调用另一个包含所有 SqlBrite 查询和游标的类(为简洁起见,代码已缩短)。

下面是包含函数 getIncome 的 DbHelper 类的样子:

谁能指出我哪里出错了?

0 投票
0 回答
698 浏览

sqlite - 由于错误 -24,无法分配大小为 2097152 的 CursorWindow

我使用带有 Dagger 的 SqlBrite 并在最小化应用程序并尝试查询项目后出现该错误。

我在每个查询中都有该查询:

我尝试在 onPause() 中关闭数据库,但我没有帮助。

只有在最小化应用程序后才能重现错误。