我试图更新我的SQLite表中的某一行,但它只是不起作用。
以下是更新它的方法:
public void setMarkerDone(DestinationMarker destinationMarker) {
String query = "UPDATE " + DatabaseManager.MARKER_TABLE_NAME
+ " SET " + DatabaseManager.MARKER_STATUS + "=" + DatabaseManager.MARKER_STATUS_INACTIVE
+ " WHERE " + DatabaseManager.MARKER_ID + "=" + destinationMarker.getId() + ";";
Log.i("TAG", query);
open();
sqLiteDatabase.rawQuery(query, null);
close();
}
这是我调用此方法时的日志输出:
I / TAG:UPDATE标记SET status = 0 WHERE id = 1;
W / SQLiteConnectionPool:数据库的SQLiteConnection对象' /data/data/com.matejhacin.travelbuddy/databases/TravelBuddy'被泄露了!请修复您的应用程序以正确结束正在进行的事务,并在不再需要时关闭数据库。
我不明白,因为正如你所看到的,我正在关闭数据库,它不应该泄漏。
SQL正确形成(请参见日志输出第一行)
应用程序没有崩溃或合成,它只是不会更改我的SQLite表中的行。
答案 0 :(得分:3)
使用metricQuery [{ ...data...}]
而非execSQL()
进行rawQuery()
次查询。
UPDATE
只编译SQL但不运行它。当移动返回的rawQuery()
时,它会逐步运行。
Cursor
编译并运行SQL。