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 に答える