2011-03-01 57 views
4

在android中,使用db.update的方式更快更好?即:構造整個where子句字符串以及where子句變量值或者通過將where子句變量值作爲字符串數組傳遞來使用第四個參數進行更新?更新android中的sqlite數據庫的首選方式

是否將where子句變量值作爲新的字符串數組傳遞給SQL注入攻擊?

public boolean UpdateChannelSortKey(Channel c) 
    { 
     ContentValues cv = new ContentValues(); 
     cv.put("SortKey", c.SortKey); 
     return this.db.update("Channels", cv, "ChannelID = ?", new String[]{String.valueOf(c.ChannelID)}) > 0; 
    } 

OR

public boolean UpdateChannelSortKey(Channel c) 
    { 
     ContentValues cv = new ContentValues(); 
     cv.put("SortKey", c.SortKey); 
     return this.db.update("Channels", cv, "ChannelID = " + c.ChannelID, null) > 0; 
    } 

回答

8

第一種方法是優選的,因爲:

1)是,它防止SQL注入攻擊。

2)最好總是使用預先準備好的語句 - 不要只用於安卓系統,所以你會獲得一個好習慣。

3)恕我直言,它具有較高的可讀性。