2014-04-24 79 views
-2

我想更新列表中的某個項目。它工作正常,我也想對數據庫行這樣做。沒有錯誤,但查詢不起作用,因爲重新啓動應用程序之後存在舊數據。哪裏不對? Ofcourse我有更多的列比我想改變數據庫不想更新

這是我如何調用查詢:

if(!done) 
    { 

list.get(longPressedPossition).setRating(tmpBundleIntent.getInt("nowaOcena")); 
list.get(longPressedPossition).setNameOfItem(tmpBundleIntent.getString("nowaNazwa")); 
dataBaseManager.updateTodo(list.get(longPressedPossition)); 
          adapter.notifyDataSetChanged(); 
          done = true; 

    } 

而且方法的類:

public void updateTodo(GifModel model) { 
     String where = SqliteHelper.NAME + "=" +"'"+ model.getNameOfIteme()+ "'"; 

     ContentValues updateTodoValues = new ContentValues(); 
     updateTodoValues.put(SqliteHelper.NAME, model.getNameOfIteme()); 
     updateTodoValues.put(SqliteHelper.RATING, model.getRating()); 
     database.update(SqliteHelper.TABLE_NAME, updateTodoValues, where, null); 
    } 

回答

1

您正在嘗試通過使用尚未設置的新名稱(在where子句中)查找項目來更新項目的名稱。所以更新沒有效果,因爲沒有項目匹配where子句。使用行ID來標識項目。

另外:

  • 你應該通過一個where子句的所有字符串參數的whereArgs數組作爲最後一個參數,而不是在null,這樣的字符串將被正確地轉義,以避免SQL注入問題。在where子句字符串中,用一個問號替換參數:'?'。
  • 您不應該在UI線程上更新數據庫,因爲這是一項昂貴的操作,而是在AsyncTask中執行。
+0

謝謝你的回答。是的,因爲我現在看到我犯了愚蠢的錯誤。再次感謝你。 – Darek