我需要在我的Android应用程序中的SQLite数据库上执行“就地”更新SQL查询。查询的格式为:
更新表T set column = column + 1其中someOtherColumn = aValue
我尝试使用SQLiteDatabase.rawQuery(updateQuery, "someOtherColumn = ?", new String{}[aValue])
执行此查询,但我发现该列未递增。当我使用通常的SQLiteDatabase.update(...)
运行相同的查询时,它工作正常,但这需要我获取旧的列值,在外部更新它然后执行update()
,这可能效率较低,因为它需要选择然后是更新。
有什么方法可以使用第一个查询“就地”更新?
感谢。
答案 0 :(得分:2)
有什么方法可以使用第一个查询“就地”更新?
这不是一个查询。这是UPDATE
声明。它不返回结果集。与execSQL()
一起使用,而不是rawQuery()
。
但是这需要我获取旧列值,在外部更新它然后执行update(),这可能效率较低,因为它需要select然后更新
这是所有SQL数据库的工作方式。现在,那些提供存储过程的人可能允许您在一个请求中执行UPDATE
和SELECT
,但它仍然 UPDATE
和SELECT
。此外,SQLite不支持存储过程,至少在我上次查看时。