2016-02-23 39 views
0

我想更新SQLite中的记录中的特定列 - 该对象具有各种属性,但我只想更新该行内的单个字段。这里是我的代码:Android 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 protected] 

谁能帮我找出什么是错我的代码,产生这个错误的问题吗?

P.S我FavoriteObject类已经不仅仅是emailisFavorite等其他属性,但在这种情况下,我并不想更新它们在所有

+1

看起来像是抱怨的电子邮件地址,也许是@。或许尝试'int i = db.update(TABLE_FAVORITES,args,EMAIL +“='”+ email +“'”,null);'ie。电子邮件地址周围的单引号.. – MikeT

+0

是的,哈哈哈,这是一个粗心的错误。你可以把这个答案,所以我可以接受它!谢谢迈克! – user5808807

回答

0

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

尝试

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

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

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; 
}