2013-10-27 81 views
1

在我的應用程序中,我想根據兩列更新我的數據庫表格。意味着更新工資,其中firstname="ekant"last name="kancha"。因此,任何主體都可以告訴我我要寫什麼查詢。如何在sqlite中更新表格android

public int updateStatus(int salary,String fname,String lName) 
{ 
    ContentValues cv=new ContentValues(); 

    String where = fname+ "=" + "ekanta"; 
    cv.put("salary",salary); 
    return sdb.update(DATABASE_TABLENAME, cv, where, null); 

} 

此代碼只適用於當我想基於名字更新..但我想根據名字和姓氏更新。

plz幫助me.thanx

+1

試試這個:'String where = fname +「=」+「ekanta」+「AND」+ lname +「=」+「lastName」;' – Razgriz

回答

2

使用本...

String where = fname+ "=" + "ekanta" + " and " + lname + "=" + "your lastname"; 
+0

除了導致無效的SQL,這太難以閱讀,太容易打破。 – user2864740

+0

其實我只是看到他的代碼,他說(字符串where = fname +「=」+「ekanta」;)正在工作。所以我只是告訴姓氏。顯然你的回答是最好的。 –

+0

我很驚訝,「somefirstname = ekanta和..」甚至是有效的。 – user2864740

5

使用佔位符。這使得更容易讀取的SQL查詢和防止SQL Injection(意外或其他)。

public int updateSalary (int salary, String fname, String lName) 
{ 
    ContentValues cv = new ContentValues(); 
    cv.put("salary", salary); 

       /* use COLUMN NAMES here */      
    String where = "firstname = ? and lastname = ?"; 
       /* bind VALUES here */ 
    String[] whereArgs = new { fname, lname }; 
    return sdb.update(DATABASE_TABLENAME, cv, where, whereArgs); 
} 

如果您有列名常數(例如private final static COLUMN_FNAME = "firstname"),那麼你可以使用這些常數建where

但是,不要將VALUES置於where字符串中。相反,使用?並根據上面的示例通過whereArgs數組提供任何VALUES。


此外,人們(甚至在同一組織內)可能會共享相同的名字和姓氏。基於這種配對的數據庫查詢/更新將在這種情況下將分解爲,因此在設計API以使用更好的記錄標識符方面進行工作可能是明智的。