Android SQLite,从特定行更新特定字段

时间:2016-02-23 02:32:55

标签: java android sqlite

我正在尝试更新SQLite中记录中的特定列 - 该对象具有各种属性,但我只想更新该行中的单个字段。这是我的代码:

public boolean updateFavorite(String email, int isFavorite){
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues args = new ContentValues();
    args.put(EMAIL, email);
    args.put(IS_FAV, isFavorite);

    int i = db.update(TABLE_FAVORITES, args, EMAIL + "=" + email, null);

    return i > 0;
}

我正在使用我的where子句的电子邮件,即从收藏夹更新记录,将isFavorite设置为(给定值),其中电子邮件是(传递给值)。

我的查询存在问题,该问题由logcat捕获,如下所示

android.database.sqlite.SQLiteException: near "@sjisis": syntax error (code 1): , while compiling: UPDATE Favorites SET email=?,isFavorite=? WHERE email=sjkshs@sjisis.com

任何人都可以帮我识别我的代码有什么问题产生这个错误吗?

P.S我的FavoriteObject课程除了emailisFavorite之外还有其他属性,但在这种情况下,我根本不想更新它们

2 个答案:

答案 0 :(得分:2)

尝试在where子句中生成电子邮件也是参数,我尝试更改您的代码但尚未测试:

public boolean updateFavorite(String email, int isFavorite){
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values= new ContentValues();
values.put(EMAIL, email);
values.put(IS_FAV, isFavorite);
//add arguments for where clause
String[] args = new String[]{email};

int i = db.update(TABLE_FAVORITES, values, "EMAIL=?", args);

return i > 0;
}

答案 1 :(得分:0)

看起来它在抱怨电子邮件地址,也许是@。

尝试

int i = db.update(TABLE_FAVORITES, args, EMAIL + "= ' " + email + "'", null);

即。电子邮件地址周围的单引号。