2012-02-17 250 views
0

如何在android數據庫中插入$符號?

當我試圖插入$和'符號。 它給出的錯誤如下,

02-18 00:39:39.821: E/AndroidRuntime(946): android.database.sqlite.SQLiteException: unrecognized token: "$": INSERT INTO NoteLists (time, data, color) VALUES ('12:39:39 AM Feb 18, 2012', '&/:;()[email protected]".,?'$<>','#D2FF00'); 

請幫助我。

回答

3

試着逃脫它們。 \$''

否則將這些標誌放入一個字符串中,並使用參數綁定,這是出於安全原因而推薦的。

0

$由未逸出',這意味着僅SQLite的解析&/:;()[email protected]".,?作爲字符串之前,剩下的字符($<>)導致語法溢出。請使用''代替'

0

?$之間的單引號需要用兩個單引號轉義。

INSERT INTO NoteLists 
    (time, data, color)  
    VALUES         \/  
    ('12:39:39 AM Feb 18, 2012', '&/:;()[email protected]".,?''$<>','#D2FF00'); 
               /\  
2

你不應該把原始值直接進入查詢。這允許SQL Injection這是一個嚴重的安全漏洞。

你應該做的是創建一個SQLiteStatement對象SQLiteDatabase.compileStatement()然後使用綁定函數。例如:

s = db.compileStatement("INSERT INTO NoteLists (time, data, color) VALUES (?, ?, ?);"); 
s.bindString(1, "12:39:39 AM Feb 18, 2012"); 
s.bindString(2, "()[email protected]\".,?'$<>"); 
s.bindString(3, "#D2FF00"); 
s.executeInsert(); 

您也可以嘗試InsertHelper。它可能使事情變得更簡單。