更新SQLite:更改文本和双重

问题描述:

我有名称(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

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

你是最受欢迎的 –

为了与问题“”你必须在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