gpt4 book ai didi

android - 为什么删除 rawQuery 需要 moveToFirst 才能实际删除行?

转载 作者:IT老高 更新时间:2023-10-28 22:22:16 26 4
gpt4 key购买 nike

我已经苦苦挣扎了几个小时,试图调试为什么即使在完全相同的数据库上完全相同的查询在 Firefox 的 SQLite 管理器中运行良好,以下删除查询实际上并没有删除任何内容:

String deleteSql = "DELETE FROM showsummary WHERE url IN (SELECT url FROM showsummary JOIN article_categories USING (url) WHERE categoryid=20 AND title LIKE 'page=%')";
mDb.rawQuery(deleteSql, null);

由于 JOIN 和子查询都有点复杂,我的想法围绕着 Android 的 sqlite 实现中关于子查询的一些限制,所以我尝试简化查询。但它仍然没有删除任何内容。

然后我将其更改为一个选择查询(只是将 DELETE 替换为 SELECT *)并且有效。所以可能不是联接或子查询才是罪魁祸首。

为了测试选择查询,我添加了一个 moveToFirst() 到返回的光标:

mDb.rawQuery(deleteSql, null).moveToFirst();

后来我又改回删除查询时,忘记删除moveToFirst() 然后就成功了!

现在很好用,但我很困惑为什么必须移动光标才能真正删除任何内容。这是设计使然还是错误?

最佳答案

我无法回答原因,但另一种解决方案是使用发布的 here 中的 .execSQL(String)

关于android - 为什么删除 rawQuery 需要 moveToFirst 才能实际删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211158/

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