我正在尝试更新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
课程除了email
和isFavorite
之外还有其他属性,但在这种情况下,我根本不想更新它们
答案 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);
即。电子邮件地址周围的单引号。