Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我应该使用哪种方法进行“a”;复杂的;更新声明?_Android_Sqlite - Fatal编程技术网

Android 我应该使用哪种方法进行“a”;复杂的;更新声明?

Android 我应该使用哪种方法进行“a”;复杂的;更新声明?,android,sqlite,Android,Sqlite,我想执行一个语句,如 UPDATE myTable SET myField = myField + 1 在Android SQLite数据库中。(是的,我想为所有记录增加myField。) 我的第一个想法是使用,但文件上说: 执行一条不是SELECT/INSERT/UPDATE/DELETE的SQL语句 对于UPDATE语句,请改用下列任一语句。 •更新(字符串、内容值、字符串、字符串[]) •updateWithOnConflict(字符串、ContentValues、字符串、字符串[]、

我想执行一个语句,如

UPDATE myTable SET myField = myField + 1
在Android SQLite数据库中。(是的,我想为所有记录增加myField。)

我的第一个想法是使用,但文件上说:

执行一条不是SELECT/INSERT/UPDATE/DELETE的SQL语句

对于UPDATE语句,请改用下列任一语句。
•更新(字符串、内容值、字符串、字符串[])
•updateWithOnConflict(字符串、ContentValues、字符串、字符串[]、int)


然而,据我所知,这种类型的更新不能用。我是否错过了使用
SQLiteDatabase.update执行此操作的一些巧妙技巧,或者文档是否已损坏?(使用execSQL运行上面的SQL可以很好地工作,尽管文档中声称不是这样。)

这种方法很好。这是必须的,因为底层的C API没有区分这些。任何不返回值的语句都可以使用
execSQL
执行


update
*和
insert
*是合法的助手方法,但是如果文档没有声明它们必须用于所有插入/更新,那么它们会做得更好,因为它们根本不能(曾经使用过
insert into table select…
?我一直都这样做!)在这种情况下,
execSQL
可以正常工作,因为它不返回任何内容。我在我的一个应用程序中出于同样的目的使用它,但我从未遇到过问题

我对这一点的理解是将“不是”理解为“不应该”,因为其他方法都有专门的方法。@Simon:问题是它确实不能用于
select
。和
pragma
返回该问题的值,因为此方法无法返回值,并且在生成所有结果之前不会单步执行语句。但是,对于任何不返回值的语句,包括
insert/update/delete
,都可以。它们有助手方法,但对于我经常使用的一些SQL(我承认它不在Android上,也不是典型的Android用例),它们并不合适。它们也不适合讨论中的SQL。同意,我的评论更多地围绕文档,这可能会更好(对于大多数Android不是这样吗?)