2016-06-18 133 views
-2
  1. 這是我的數據庫類。如何更新我的sqlite數據庫中的特定數據?

    public boolean updatePrediction(String item_ean,String prediction) 
    { 
    SQLiteDatabase db=this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(ITEM_EAN, item_ean); 
    contentValues.put(PREDICTION_TYPE,prediction); 
    db.update(TABLE_REPORT,contentValues,PREDICTION_TYPE+"="+,null); 
    return true; 
    
  2. 這是活動類的代碼片段。

    toggleButton.setOnClickListener(new View.OnClickListener() 
    { 
    @Override 
    public void onClick(View v) { 
    if (((ToggleButton) v).isChecked()) { 
    booleanisUpdated=dbcontroller.updatePrediction(editText.getText().toString(),"4"); 
    Toast.makeText(getBaseContext(), "Toggle is on"+isUpdated, Toast.LENGTH_LONG).show(); 
    
    } else { 
    Toast.makeText(getBaseContext(), "Toggle is off",Toast.LENGTH_LONG).show(); 
    
    } 
    } 
    }); 
    

當我切換切換按鈕在我的情況的具體數據item_ean的prediction_type應該改變。

+0

SQLiteDatabase是您的類的名稱,它擴展SQLiteOpenHelper? – Marat

回答

0

execSQL用於執行不是SELECT/INSERT/UPDATE/DELETE的單個SQL語句。

對於UPDATE語句,請改用下列任何一種語句。

  1. 更新(字符串,ContentValues,字符串,字符串[])
  2. updateWithOnConflict(字符串,ContentValues,字符串,字符串[],INT)

您必須使用更新你的情況是這樣:

public boolean updatePrediction(String item_ean,String prediction){ 
    SQLiteDatabase db=this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(ITEM_EAN, item_ean); 
    String[] args = new String[]{prediction}; 
    db.update(TABLE_REPORT,contentValues,PREDICTION_TYPE+"=?",args); 
    return true; 
} 
+0

不!它沒有更新。 – Moses

+0

@Moses你可以嘗試一下我的答案嗎? – Casablancais

+0

我做到了。完全如此。不工作。 – Moses