Android SQLite数据库中的“就地”更新无法使用rawQuery

时间:2011-11-25 20:11:00

标签: android database sqlite

我需要在我的Android应用程序中的SQLite数据库上执行“就地”更新SQL查询。查询的格式为:

  

更新表T set column = column + 1其中someOtherColumn = aValue

我尝试使用SQLiteDatabase.rawQuery(updateQuery, "someOtherColumn = ?", new String{}[aValue])执行此查询,但我发现该列未递增。当我使用通常的SQLiteDatabase.update(...)运行相同的查询时,它工作正常,但这需要我获取旧的列值,在外部更新它然后执行update(),这可能效率较低,因为它需要选择然后是更新。

有什么方法可以使用第一个查询“就地”更新?

感谢。

1 个答案:

答案 0 :(得分:2)

  

有什么方法可以使用第一个查询“就地”更新?

这不是一个查询。这是UPDATE声明。它不返回结果集。与execSQL()一起使用,而不是rawQuery()

  

但是这需要我获取旧列值,在外部更新它然后执行update(),这可能效率较低,因为它需要select然后更新

这是所有SQL数据库的工作方式。现在,那些提供存储过程的人可能允许您在一个请求中执行UPDATESELECT,但它仍然 UPDATESELECT。此外,SQLite不支持存储过程,至少在我上次查看时。