2013-02-18 37 views
0

我有一个简单的表有三个域运行,即使同时 _id 名 电子邮件更新查询不能为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); 

我们可以运行一个查询没有主键或这是什么错误。在之前的情况下,应用程序停止运行。 在此感谢任何帮助。

+2

define'not working' – njzk2 2013-02-18 09:06:47

+0

什么不起作用? – 2013-02-18 09:07:50

+1

[** i **不是** I **](http://en.wikipedia.org/wiki/I_(代词))。 – 2013-02-18 09:12:33

回答

0

确实可以在没有主键的情况下运行更新。但是,如果我得到正确的,你需要的是以下几点:

ContentValues cv=new ContentValues(); 
cv.put("email",e); 
String whereClause = "name = ?"; 
String [] whereArgs = {n}; 
dbase.update(table, cv, whereClause, whereArgs); 

您想在name所以这里是搜索。

始终使用whereArgs设置whereClause参数,否则,你的风险SQL注入 - 该参数将不进行消毒(这是你的这部分代码:"email="+e)。

+0

它现在正在工作,但在以前的代码中有没有在execSQL或查询中工作的任何错误。 – tejinder 2013-02-18 11:30:14

+0

@tejinder查看你的'query'解决方案:你已经交换了'where'和'set'子句的地方。正如你写的那样,你通过电子邮件搜索并更新名称。我不知道你的'execSQL'的问题可能是什么。 – 2013-02-18 12:07:30