2016-02-26 99 views
0

我正面臨Android中的SQLite問題,我知道解決方案必須簡單,但我所做的並不工作!如何避免特殊字符SQLite Android

// Update a contact with a new name 
    public void updatename (String phone, String newname) { 
     newname = newname.replaceAll("'","\'"); 
     String query = "UPDATE contacts SET name = '"+newname+"' WHERE phone = '"+phone+"'"; 
     SQLiteDatabase db = this.getWritableDatabase(); 

     db.execSQL(query); 

     //db.close(); 


    } 

替換功能不工作!!

回答

1

利用PreparedStatement,決不應該做的報價東西自己,只是不必要的麻煩:

PreparedStatement pstmt = con.prepareStatement("UPDATE constacts SET name = ? WHERE phone = ?"); 
pstmt.setString(1, "foo") 
pstmt.setString(2, '123") 
2

使用update()到你的字符串映射到佔位符,和SQLite將難逃字符串,這樣最後的命令一直有效。

你應該一直在爲每個命令做這件事。

0

SQL不使用反斜槓轉義。 在SQL字符串文字中,引號加倍,因此您需要用''替換'

但是這將是一個更好的主意,使用參數:

String query = "UPDATE contacts SET name = ? WHERE phone = ?"; 
    db.execSQL(query, new Object[]{ newname, phone });