2011-12-03 109 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

谢谢你这样使用完整的信息。 –