2011-12-03 16 views
0

sq-liteデータベースの特殊文字の一重引用符( ')のため、私の問題でデータを更新できません。 私は更新データが必要ですが、文字列内の特殊文字( ')のシングルクォートは、アンドロイドのsq-liteデータベースにエラーを出して更新する方法です。 クエリがある:上記のクエリでupdateクエリがsqliteで動作しない

update pollm set dt_lastaccessedon='null',tx_choice1responsecount='1',tx_choice2responsecount='0',tx_choice3responsecount='0',tx_choice4responsecount='0',tx_choice5responsecount='0',tx_userresponse='TX_OPTION2',tx_questiontext='Is BPM mandatory?',tx_title='BPM',tx_choice1='yes',tx_choice2='no',tx_choice3='don't know', tx_choice4='null',tx_choice5='null',dt_availfrom='2011-07-08 00:00:00.0',dt_availto='2011-07-09 00:00:00.0',tx_status='Closed' where lmspollid='321' 

問題は、この文字列を「知らない」で、単一引用符です。このクエリが機能しないためです。あなたは、メソッドの更新を使用しての代わりに、SQLを自分で作成する必要があります私

+0

私の変更された回答を見てください。今、あなたは3つの選択肢を持っています:-) – user370305

答えて

1

1.

助けてください。組み込みのメソッドは、必要なすべてをエスケープします。 Android - SQLiteDatabase

ルックは、これはあなたの引用符の問題を解決だけでなく、SQLインジェクションを軽減するだけでなく。

2.

こちらのフォームSQLite - Frequently Asked Questions

(14)はどのように埋め込まれた単一引用符( ')文字を含む文字列リテラルを使用していますか?

SQL標準では、1つの行に2つの単一引用符を付けることによって、文字列内の一重引用符をエスケープするように指定しています。 SQLは、Pascalプログラミング言語のように機能します。 SQLiteはこの標準に従います。例:

 INSERT INTO xyz VALUES('5 O''clock'); 

3.

使用DatabaseUtils.sqlEscapeString。文字列は一重引用符で囲まれ、文字列内の一重引用符は二重引用符で囲まれます。

+0

'知らない'は働いていません。 –

+0

このような情報を十分にありがとうございます。 –

関連する問題