无法更新SQLite表中的行

时间:2015-05-27 13:36:15

标签: android database sqlite

我试图更新我的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表中的行。

1 个答案:

答案 0 :(得分:3)

使用metricQuery [{ ...data...}] 而非execSQL()进行rawQuery()次查询。

UPDATE只编译SQL但不运行它。当移动返回的rawQuery()时,它会逐步运行。

Cursor编译并运行SQL。