2011-07-30 116 views
4

我使用一個相當簡單的命令來嘗試刪除SQLite數據庫中的行。但是,成功運行該命令後,這些行仍保留在DB中!?Android的SQLite刪除並不實際刪除行

SQLiteDatabase dbinst = mydb.getWritableDatabase(); 

try 
{ 
    dbinst.beginTransaction(); 
    int del = dbinst.delete("sms", "wassent = ? or waserror = ? or wasaborted = ?", new String[] {"1", "1", "1"}); 
    clog.debug("Rows deleted: " + del); 
    dbinst.setTransactionSuccessful(); 
} 
catch(Exception e) 
{ 
    clog.error(e.toString(),e); 
} 

dbinst.close(); 

記錄器說「行刪除:3」,並沒有出現異常。但是,之後立即執行查詢時,行仍然存在?

我在這裏做的任何明顯的事情都是錯誤的嗎?

+0

你解決了這個問題嗎? –

回答

1

您必須致電endTransaction才能提交更改。更多信息可以在這裏找到:beginTransaction() documentation

+0

說,它是否以任何方式幫助實際使用交易進行簡單刪除?那麼如何刪除多行的單個刪除?性能或線程安全性更好嗎? –

+0

@androiddeveloper事務是很有用的,如果你想自動更新幾個表(所有的更新工作或他們都失敗,沒有混合的結果)。此外,如果您的應用程序無法處理用戶在表更新中拉電池,然後使用事務。 –

+0

是有意義的。但是如果我知道刪除操作僅適用於單個行,它會非常有用嗎?那麼多行呢?在線程安全方面使用沒有事務的刪除會危險嗎?我的意思是,這是「db.delete(...)」線程安全嗎? –