更新查询不适用于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
可能有什么问题。