【发布时间】:2013-12-06 19:17:10
【问题描述】:
我有一个类似这样的插入或替换命令:
INSERT or REPLACE INTO author(id,bookId,name) values((SELECT id FROM author WHERE bookId='4'),'4','Book Title')
基本上,如果存在与 bookId 对齐的 id,它会替换一行。如果没有 id 则插入。
我正在使用一个名为“SQLite Database Browser 2.0”的应用程序在我的应用程序中的相同数据库表上测试我的 SQLite 命令(我正在从模拟器中导出数据库)。上面的命令在数据库浏览器中就像一个魅力,但应用程序没有插入或替换(现在它应该插入,因为表是空的)。
我知道我的 SQLite 命令是正确的,并且我的 Logcat 中没有任何错误。
我是否遗漏了 Android 需要执行此命令的部分内容?
【问题讨论】:
-
如果 bookId 不存在,是否插入值。?
-
不,它没有插入。我从模拟器中导出了数据库,并从字面上运行了应用程序运行的相同 SQLite 语句并且它可以工作。 (我将每条语句记录到 logcat 中)。
-
您使用哪个代码来执行此操作,
execSQL()或rawQuery()?或者您可以发布 sn-p 以在 Android 中插入您的数据吗? (另外,看this) -
如果它没有给出错误,那么必须插入数据,你确定你已经使用了 beginTranstion 并提交了它。
-
@AndrewT。 - 我正在使用 rawQuery。将其更改为 execSQL 并且可以正常工作。你能提供这个作为答案,以便我选择它吗?