2012-02-17 18 views
0

$ symbolをandroidのSQLデータベースに挿入するには?

私は$と '記号を挿入しようとしています。次のように それは私を助けてください

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

?$の間の一重引用符は、2つの一重引用符でエスケープする必要があります。

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

生の値を直接クエリに配置しないでください。これにより深刻なセキュリティ上の脆弱性であるSQL Injectionが可能になります。

代わりに行うべきことは、SQLiteDatabase.compileStatement()SQLiteStatementオブジェクトを作成し、次にバインド機能を使用することです。例:

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を試すこともできます。物事を簡単にするかもしれない。

関連する問題