SQLite Insert或Replace在Android之外工作,但不在代码中?

SQLite Insert或Replace在Android之外工作,但不在代码中?,android,sqlite,Android,Sqlite,我有一个类似以下内容的插入或替换命令: 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命令(我正在从e

我有一个类似以下内容的插入或替换命令:

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命令(我正在从emulator导出数据库)。上面的命令就像数据库浏览器中的一个符咒,但应用程序不插入或替换(现在应该插入,因为表是空的)

我知道我的SQLite命令是正确的,我的Logcat中没有任何错误


我是否缺少Android执行此命令所需的部分?

根据问题注释,问题在于
rawQuery()
只编译您传入的SQL,而不执行它。要执行使用
rawQuery()
编译的SQL,通常需要对返回的
光标发出一个
moveTo…()
调用


在这种情况下,要编译和执行SQL,请使用
execSQL()

如果bookId不存在,是否插入值。?否,不插入。我从emulator中导出了数据库,并运行了与应用程序运行时相同的SQLite语句,并且运行正常。(我正在将每条语句记录到日志猫中)。您使用哪种代码执行此操作,
execSQL()
rawQuery()
?或者你可以发布这个片段,在Android中插入你的数据吗?(同时,请注意)如果它没有给出错误,那么必须插入数据,您确定您使用了BeginTransition并提交了它。@AndrewT.-我正在使用rawQuery。将它改为execSQL,它就工作了。你能提供这个答案让我选择吗?