使用ContentValues和update-method更新sql数据库

spi*_*ala 21 database sqlite android

我想用android的SQLiteDatabase类的本机更新方法更新我的sql lite数据库.

ContentValues dataToInsert = new ContentValues();                          
dataToInsert.put("name", "flo");
dataToInsert.put("location", "flotown");
String where = "id" + "=" + id;
try{    
    db.update(DATABASE_TABLE, dataToInsert, where, null);
}
catch (Exception e){
    String error =  e.getMessage().toString();
}
Run Code Online (Sandbox Code Playgroud)

但是我得到以下错误:android.database.sqlite.SQLiteException:near"15":语法错误:,同时编译:UPDATE mytable SET location = ?, name =?WHERE id = 2010-09-21 15:05:36.995

我不知道应该是什么问题.不知何故,值不会到达sql语句.我使用insert方法做的几乎一样,并且工作得非常好.

很多,弗洛里安

The*_*uct 48

您正在使用更新功能错误.它应该是这样的:

String where = "id=?";
String[] whereArgs = new String[] {String.valueOf(id)};

db.update(DATABASE_TABLE, dataToInsert, where, whereArgs);
Run Code Online (Sandbox Code Playgroud)

whereArgs数组中的字符串替换为每个'?' 在where变量中.

即.如果你有where ="name =?AND type =?那么第一个'?' 将由whereArgs [0]替换,而第二个由whereArgs [1]替换.