2012-07-30 84 views
1

我试图更新sqlite数据库中的一行,但它给出了语法错误。我想我错过了一些东西,但我看不到它。也许你可以帮助我。sqlite更新元组

更新代码:

public void updateEntry(String oldname,String name,String mail, String phone,String adres) 
    { 
    ContentValues args = new ContentValues(); 
    args.put(COLUMN_NAME, name); 
    args.put(COLUMN_EMAIL, mail); 
    args.put(COLUMN_PHONE, phone); 
    args.put(COLUMN_ADDRESS, adres); 
    sqLiteDatabase.update(MYDATABASE_TABLE, args,COLUMN_NAME + "=" + oldname, null); 
    } 

调用Update(顺便说一下T,T2,T3,T4是EditTexts)

mySQLiteAdapter.updateEntry(isim, t.getText().toString(), t2.getText().toString(), t3.getText().toString(), t4.getText().toString()); 

错误

07-30 11:34:56.487: E/AndroidRuntime(1990): android.database.sqlite.SQLiteException: near "smith": syntax error: , while compiling: UPDATE MY_TABLE SET Name=?, Phone=?, Email=?, Address=? WHERE Name=john smith 

首先,我想,我没有给任何地址或电话作为字符串,但我打印了他们,我看到了正确的值。任何想法,我的错在哪里?

回答

1

这是因为你没有逃脱oldname字符串,其中包含john smith

使用sqLiteDatabase.update(MYDATABASE_TABLE, args,COLUMN_NAME + "='" + oldname + "'", null);

或使用

String whereClause = COLUMN_NAME + "=?"; 
String[] whereArgs = new String[] {oldname}; 
sqLiteDatabase.update(MYDATABASE_TABLE, args, whereClause, whereArgs, null); 
+0

户外我用来替代 “” '',这就是为什么我没有尝试 '' 试。无论如何谢谢你的工作。 – 2012-07-30 11:53:20