当前位置: 首页 > 知识库问答 >
问题:

如何在android中转义sqlite中的''等特殊字符

那绪
2023-03-14

我有一个函数,它在SQLite数据库中的一个表上执行查询。我声明一个常量:public static final String CANADA_HISTORY=“Canada's history”;。它存储字符串变量中(假设困难),

Cursor c = mDb.rawQuery("select * from Questions_answers where CHAPTERS = '"+difficulty+"'" , null);
I/Database( 1170): sqlite returned: error code = 1, msg = near "s": syntax error
D/AndroidRuntime( 1170): Shutting down VM
W/dalvikvm( 1170): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime( 1170): FATAL EXCEPTION: main
E/AndroidRuntime( 1170): android.database.sqlite.SQLiteException: near "s": syntax error: , while compiling: select * from Questions_answers where CHAPTERS  = 'Canada's History'
1.  difficulty=difficulty.replaceAll("'","''");
2.  difficulty=difficulty.replaceAll("'","\'");
3.  difficulty = DatabaseUtils.sqlEscapeString(difficulty);

除此之外,它还适用于像加拿大历史这样的单个单词,我的意思是没有特殊字符word。

请给我解决问题的建议,谢谢。

共有1个答案

陆仲渊
2023-03-14

SQL标准指定通过将两个单引号放在一行中来转义字符串中的单引号。在这方面,SQL的工作原理类似于Pascal编程语言。SQLite遵循此标准。示例:

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

参考:SQLite常见问题

 类似资料:
  • 问题内容: 我们为科学应用程序提供了一个带有较长段落的表格,其中包含诸如符号beta(ß-arrestin)等字符。我们在Mule上运行一个JSON服务,该服务获取数据并持久保存到oracle数据库中。这个带有长段的特殊元素给我RAML / JSON错误。下面是错误 科学家写下的形式元素我们无法控制。因此,在M子方面,我们如何像Java具有URLEncoded一样自动地转义这些字符。非常感谢 问题

  • 我们有一个表单,其中有一个很长的段落,用于包含符号beta(ß-arrestin)等字符的Scientific应用程序。我们有一个在Mule上运行的JSON服务,它获取数据并保存到oracle数据库。这个带有长段落的特殊元素在RAML/JSON中给了我一个错误。下面是错误 科学家们所写的形式元素我们无法控制。因此,在骡子方面,我们如何像java那样自动摆脱这些角色呢。非常感谢

  • 问题内容: 在创建自定义标签或Java方法来执行此操作之前,在JSP中转义HTML字符的标准方法是什么? 我有一个String对象,我想在HTML中显示它,以便它按原样显示给用户。 例如: 会成为: 问题答案: 简短答案: 还有另一种选择:

  • 问题内容: 有没有一种方法可以将字符串转换为可以在Web文档中正确显示的字符串?例如,更改字符串 至 问题答案: 具有专门为此设计的功能: http://commons.apache.org/proper/commons- lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html

  • 问题内容: Oracle中是否有一种简单的方法来转义SQL语句中的特殊字符?(即%,&,’)我看到了有关手动转义字符的链接,但我认为Oracle可能提供了一种更简便的方法。 注意:我正在通过ORM生成动态SQL select语句。 问题答案: 如果使用绑定变量和ORM,则应自动处理嵌入的单引号和“&”号。这些是SQL * Plus或SQL * Developer中的特殊字符。 要在查找文字字符%和

  • 正如我们所看到的,一个反斜杠 "\" 是用来表示匹配字符类的。所以它是一个特殊字符。 还存在其它的特殊字符,这些字符在正则表达式中有特殊的含义。它们可以被用来做更加强大的搜索。 这里是包含所有特殊字符的列表:[ \ ^ $ . | ? * + ( )。 现在并不需要尝试去记住它们 —— 当我们分别处理其中的每一个时,你自然而然就会记住它们。 转义 如果要把特殊字符作为常规字符来使用,只需要在它前面