更新查询不适用于android

更新查询不适用于android,android,Android,我有一个包含三个字段的简单表 _身份证 名称 电子邮件 我正在尝试通过搜索电子邮件来更新记录名,如 db.execSQL("update contacts set email='"+email+"' where name='"+name+"'"); 即使在运行此查询时,它也不起作用 ContentValues cv=new ContentValues(); cv.put("name",n); dbase.update(table, cv, "email="+e,null);

我有一个包含三个字段的简单表 _身份证 名称 电子邮件

我正在尝试通过搜索电子邮件来更新记录名,如

db.execSQL("update contacts set email='"+email+"' where name='"+name+"'");
即使在运行此查询时,它也不起作用

ContentValues cv=new ContentValues();
    cv.put("name",n);
    dbase.update(table, cv, "email="+e,null);
我们是否可以在没有主键的情况下运行查询,或者这其中的错误是什么。在前面的例子中,应用程序停止运行。
感谢您的帮助。

您可以在不使用主键的情况下运行更新。但是,如果我没有弄错,您需要的是:

ContentValues cv=new ContentValues();
cv.put("email",e);
String whereClause = "name = ?";
String [] whereArgs = {n};
dbase.update(table, cv, whereClause, whereArgs);
您想按
名称搜索,所以它就在这里


始终使用
wherergs
设置
whereClause
参数,否则您将面临SQL注入的风险-这些参数将不会被清除(这是针对代码的这一部分:
“email=“+e
).

。它现在可以工作了,但是早期的代码中是否有任何错误在execSQL或query中不起作用。@tejinder查看您的
query
解决方案:您已经交换了
where
set
子句的位置。正如你写的那样,你通过电子邮件搜索并更新名字。我不知道您的
execSQL
可能有什么问题。