1

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

更新代码:

 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);
     }

调用更新(顺便说一下 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

首先我想,我没有提供任何地址或电话作为字符串,但我打印了它们并且我看到了正确的值。知道我的错在哪里吗?

4

1 回答 1

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);
于 2012-07-30T11:48:47.817 回答