2017-09-01 24 views
-1

我有名稱(TEXT)和整體(REAL)的DB,我想改變他們兩個,我創建了一個方法女巫需要oldName,newName,double oldOverall,double newOverall 。更新SQLite:更改文本和雙重

這是我的更新方法:

public void updatePlayerName(String oldName, String newName, double oldOverall, double newOverall) { 
    SQLiteDatabase db = getWritableDatabase(); 
    db.execSQL("UPDATE " + TABLE_PLAYERS + " SET " + COLUMN_PLAYERNAME + " = '" + newName + "' , " + COLUMN_OVERALL + " = " + newOverall + 
      " WHERE " + COLUMN_PLAYERNAME + " = '" + oldName + "' , " + COLUMN_OVERALL + " = " + oldOverall + ";"); 
    Log.d(TAG, "UPDATE '" + oldName + "' from " + TABLE_PLAYERS + " to " + newName); 
} 

,而我試圖更新我得到這個錯誤:

android.database.sqlite.SQLiteException: near ",": syntax error (code 1): , while compiling: UPDATE players SET playername = 'Ben' , playeroverall = 6.0 WHERE playername = 'Guy' , playeroverall = 5.0;

我認爲它是「」跡象,但是當我將其更改爲,該方法錯誤地更新了我的數據庫,例如:

if i want to update "A", 3.0 to "B", 4.5 it updates to "0", 3.0.

+0

你是什麼意思,它更新不正確? – joao86

回答

1
public void updatePlayerName(String oldName,String newName,double oldOverall, double newOverallName) { 
    String ss = String.valueOf(oldOverall); 
      SQLiteDatabase db = this.getReadableDatabase(); 
      ContentValues contentValues = new ContentValues(); 
      contentValues.put(COLUMN_PLAYERNAME , newName); 
contentValues.put(COLUMN_OVERALL , newOverall); 
      db.update(TABLE_PLAYERS , contentValues, COLUMN_PLAYERNAME + " = ?"+" AND "+COLUMN_OVERALL+ " = ?", new String[]{oldName,ss }); 
      db.close(); 
     } 
+0

謝謝,它的工作! – GuyShoham

+0

你是最受歡迎的 –

1

爲了與問題「」你必須在WHERE子句中使用

db.execSQL("UPDATE " + TABLE_PLAYERS + " SET " + COLUMN_PLAYERNAME + " = '" + newName + "' , " + COLUMN_OVERALL + " = " + newOverall + 
     " WHERE " + COLUMN_PLAYERNAME + " = '" + oldName + "' AND " + COLUMN_OVERALL + " = " + oldOverall + ";"); 

關於不正確更新,你是什麼意思?

+0

當我使用AND時,該方法正在編譯, 但名稱變爲0,並且整體沒有改變。 @Bapusaheb Shinde已經解決了這個問題 – GuyShoham

+0

他在SET和WHERE子句中都使用了AND。 –

+0

噢好吧......我告訴他只是在WHERE子句中使用:) – joao86