2013-02-18 36 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