gpt4 book ai didi

android - "count(*)"上的 rawQuery 不返回任何行

转载 作者:行者123 更新时间:2023-11-30 04:13:40 27 4
gpt4 key购买 nike

我正在尝试解决我在 Ankidroid 中遇到的数据库问题。执行了以下语句:

SELECT count(*) FROM cards c WHERE type = 1 AND combinedDue <
1335153600.000000

生成 there .执行的代码如下 ( github link ):

cursor = mDatabase.rawQuery(query, null);
if (!cursor.moveToNext()) {
throw new SQLException("No result for query: " + query);
}

我不明白我怎么会没有记录,我应该得到 1 或 0。日志中的调用堆栈如下:

at com.ichi2.anki.Deck.rebuildRevCount(Deck.java:1351)
Caused by: android.database.SQLException: No result for query: ……
at com.ichi2.anki.AnkiDb.queryScalar(AnkiDb.java:129)
at com.ichi2.anki.Deck._rebuildRevCount(Deck.java:1621)

有什么想法吗?

其实我更多的是在看一个类似的案例。我们有一个包含“全局”列的«Stats»表,其中可以有一个全局记录和许多日常记录。如果我们没有找到(一个简单的选择)全局记录,我们就创建它。在我的手机上,似乎有时找不到全局记录,所以我们创建了一个额外的记录,这打破了一切。它真的很像我上面展示的案例。

编辑:

我找到了原因。在另一个线程中,AsyncTask 在进行查询的同时关闭数据库(因为 GUI 触发的大量处理是异步完成的)。它返回一个没有记录的游标。

我通过向文件添加跟踪记录看到了这一点。

最佳答案

尝试 if (cursor.moveToFirst == false) 而不是使用 !运算符(operator)。我认为你目前的做法总是将你传递到 if 的正文中。游标未正确初始化。没有 a.moveToFirst。

关于android - "count(*)"上的 rawQuery 不返回任何行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10419311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com