我想用Android的SQLiteDatabase类的原生update-method更新我的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();
}

但我有以下错误:

android.database ase.sqlite.SQLiteException:Near"15":语法错误:, 编译时:更新MyTable集合位置=?,名称=?哪里 ID=2010-09-21 15:05:36.995

我不知道应该是什么问题.不知怎的,这些值没有到达SQL语句中.我用insert方法做了几乎相同的事情,效果非常好.

推荐答案

你用错了更新功能.应该是这样的:

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

db.update(DATABASE_TABLE, dataToInsert, where, whereArgs);

WHERE参数数组中的字符串被替换 for each ‘?’在WHERE变量中.

例如,如果where="name="和type=?则第一个"?"将被wherergs[0]替换,第二个将被wherergs[1]替换.

Database相关问答推荐

如何正确创建mongo模型和客户端?

如何在同一个表的派生部分引用主键?

什么时候需要手动重新分析 PostgreSQL 中的表?

我如何知道 DynamoDB 表分布在多少个分区上?

动态数据模型

H2 - 如何截断(truncate)所有表?

按纬度/经度进行半径搜索

数据库内部—从哪里开始?

Postgres - 如何返回缺失数据计数为 0 的行?

如何在 MongoDB 和 PostgreSQL for GIS 之间进行 Select ?

将 Redis 数据同步到 MySQL 的最佳策略是什么?

MySQL 转储所有数据库并在导入时创建(或重新创建)它们?

用于 Java 桌面应用程序的最佳数据库是什么

单父实体的核心数据性能

在 Rails 中销毁/删除数据库

在数据库字段中存储数字数组

在数据库中存储业务逻辑

MySQL 从一个数据库插入另一个数据库

分离实体和被管理实体

MySQL:为什么使用 VARCHAR(20) 而不是 VARCHAR(255)?