【发布时间】:2016-05-07 19:55:52
【问题描述】:
所以我的问题是这样的。
在现有的 android 框架中,有什么方法可以使用 ContentValues 执行 UPDATE,其中 SET 值为 表达式?
现在我想要实现的是 SQL 更新,其中一列更新为其他两列的值,如下所示:
UPDATE myTable SET columnA = columnB + columnC WHERE rowId = 5
这行得通,没问题。但是我看不到任何使用 ContentValues 和 android 文档 explicitly says 的方法:
void execSQL(String sql, Object[] bindArgs)
执行不是 SELECT/INSERT/UPDATE/DELETE 的单个 SQL 语句。
...
对于 UPDATE 语句,请改用以下任何一种。
更新(字符串,内容值,字符串,字符串[])
updateWithOnConflict(String, ContentValues, String, String[], int)
那么是否可以使用现有的更新方法来完成,还是我将不得不忽略文档并继续使用 execSQL?
【问题讨论】:
-
我不知道文档为什么这么说。查看the source code,因为他们对所有内容都使用绑定参数,所以我看不出您如何使用所需的表达式。
-
像往常一样,一旦我放弃查看问题并在此处发布问题,我在 SQLiteDatabase.compileStatement 中找到了一个潜在的解决方案。如果可行,我会更新。
-
将
rawQuery()用于查询(SELECT),将execSQL()用于命令(其他)。