2011-12-03 153 views
0

我的問題是無法更新數據,因爲在sq-lite數據庫中的特殊字符單引號(')。 我想更新數據,但在字符串中的特殊字符(')單引號給Android中的sq-lite數據庫如何更新錯誤。 查詢是:更新查詢不工作在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' 

的問題是單引號中的「不知道」這個字符串。因爲這個查詢不起作用。請幫我

+0

看看我的修改答案。現在你有3個選擇... :-) – user370305

回答

1

您應該使用該方法更新,而不是生成的SQL自己。內置的方法將爲您做所有需要的轉義。

Android - SQLiteDatabase

這不僅解決了您的報價問題,而且也減輕了SQL注入

2.

表格這裏SQLite - Frequently Asked Questions

(14)如何使用一個字符串文字包含嵌入的單引號(')字符?

SQL標準指定通過在一行中放置兩個單引號來逃避字符串中的單引號。在這方面,SQL就像Pascal編程語言一樣工作。 SQLite遵循這個標準。例如:

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

使用DatabaseUtils.sqlEscapeString。該字符串用單引號括起來,字符串內的單引號變爲雙引號。

+0

'不知道'是不是工作.. –

+0

謝謝你這樣使用完整的信息。 –