2015-05-27 63 views
-2

我试图更新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状态= 0 WHERE ID = 1;

W/SQLiteConnectionPool:数据库'/data/data/com.matejhacin.travelbuddy/databases/TravelBuddy'的SQLiteConnection对象被泄露!请修复您的应用程序以正确结束正在进行的事务,并在不再需要时关闭数据库。

我不明白,因为你可以看到,我正在关闭数据库,它不应该泄漏。

和SQL结构正确(查看日志输出第一行)

的应用程序不会崩溃或aynthing,它只是没有在我的SQLite表更改行。

+0

Logcat本身表示在不再需要数据库时正确关闭数据库。 –

回答

3

使用execSQL()而不是rawQuery()查询UPDATE

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

execSQL()都编译并运行SQL。