使用LIKE查询在文本中使用单引号的Ormlite异常

安东尼

我有一个似乎是错误的错误。我可以在数据库中添加一个在文本中带有单引号的条目。

但是,当我使用QueryBuilder搜索任何类似xyz的文本时,如果xyz中包含单引号,我会发现MySQL抱怨SQL格式错误。

除了自己解析所有字符串外,Ormlite中是否可以调用某些方法来“字符串化”我的字符串?

示例代码如下:

public boolean isDuplicate () {
  QueryBuilder<Company, Long> qb = getDao().queryBuilder() ;
  Where<Company, Long> where = qb.where() ;
     try {
       if (Strings.isValid(name))
           where.like("name", name) ;

        if (Strings.isValid(regNo)) {
           if (Strings.isValid(name))
              where.or() ;

           where.eq("regNo", regNo) ;

           List<Company> res = where.query() ;
           if (res != null && res.size() > 0)
              return true ;
           else
              return false ;
        }
     } catch (SQLException e) {
        GlobalConfig.log(e, true);
     }
     return false ;
  }

如果公司名称中包含单引号,则会创建一个SQL错误:

为“不要删除我”创建默认条目2 Please Pte Ltd. [12-07-2013 13:45:42]您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以在“ t Delete Me 2 Please Pte Ltd.”附近使用正确的语法。regNo第1行的OR ='delete')'

任何建议欢迎。

安东尼

好的,我知道了这一点-我需要使用SelectArg方法来查询数据库。

所以现在看起来像这样:

  ...
  if (Strings.isValid(name))
     {
     SelectArg arg = new SelectArg () ;   // Added
     arg.setValue (name) ;                / Added
     where.like("name", arg) ;    // Changed
     }

    if (Strings.isValid(regNo))
       {
       if (Strings.isValid(name))
          where.or() ;

       SelectArg arg = new SelectArg () ;     // Added
       arg.setValue (regNo) ;                 // Added
       where.eq("regNo", arg) ;               // Changed

       List<Company> res = where.query() ;

       if (res != null && res.size() > 0)
          return true ;
       else
          return false ;
       ...

我了解到的是:您必须使用一个SelectArg PER项目。


现在我对格雷的问题是,为什么不将其作为默认行为?当我插入或更新它时,它似乎会自动发生,为了解决我发现的问题,我必须添加更多行代码,这些行很容易成为内部查询处理的一部分。

我了解他在这篇文章中的担忧,但我同意戴尔的看法。也许是半途而废的是要有一个标志来说明Ormlite应该以哪种方式对待查询方法的参数。

我很欣赏Ormlite中“可编程” SQL的灵活性和简单性,并且几乎在每种情况下,与Ormlite相关的代码都简洁,易于理解且合乎逻辑。这是一种罕见的情况,我觉得它过于冗长,没有任何净收益。只是我的观点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Codeigniter允许在插入查询中使用单引号

来自分类Dev

如何在MessageFormat中使用单引号

来自分类Dev

在搜索栏中使用单引号

来自分类Dev

在MATLAB中使用单引号的计算符号

来自分类Dev

在Python中使用单引号的While循环

来自分类Dev

尝试在单引号Bash中使用变量

来自分类Dev

使用sed替换包含引号和单引号的文本

来自分类Dev

需要在文本文件中插入单引号以用作使用sed的SQL查询

来自分类Dev

如何在Clojure宏中使用单引号或双引号?

来自分类Dev

如何在JavaScript中使用单引号和双引号

来自分类Dev

如何在MySQL查询中使用VB.NET参数连接单引号?

来自分类Dev

如何在Bigquery查询文本中使用转义引号?

来自分类Dev

在find命令中使用“单引号”或不使用单引号有什么区别

来自分类Dev

在逗号上分割字符串,忽略单引号,并在单引号中使用逗号

来自分类Dev

当我在PHP for SQL Management Studio中使用单引号时如何添加单引号

来自分类Dev

如何在另一个单引号短语中使用awk的单引号?

来自分类Dev

如何使用excel vba的Like函数匹配单引号(“)?

来自分类Dev

Android中使用ORMLITE的多个查询条件

来自分类Dev

使用动态查询在openquery中转义单引号

来自分类Dev

使用Beautiful Soup findall在单引号之间提取文本

来自分类Dev

在Shell脚本中使用单引号(')-RSYNC出现问题

来自分类Dev

在参数中使用单引号来递归系统bash调用

来自分类Dev

如何在单引号字符串中使用变量?

来自分类Dev

无法在Golang中使用单引号分配字符串

来自分类Dev

如何在Gatsby FrontMatter中使用单引号?

来自分类Dev

如何在VSCode中使用eslint使文件成为单引号

来自分类Dev

在字符串检查中使用单引号

来自分类Dev

在EL的字符串中使用单引号

来自分类Dev

为什么在$ _POST关联数组中使用单引号

Related 相关文章

  1. 1

    Codeigniter允许在插入查询中使用单引号

  2. 2

    如何在MessageFormat中使用单引号

  3. 3

    在搜索栏中使用单引号

  4. 4

    在MATLAB中使用单引号的计算符号

  5. 5

    在Python中使用单引号的While循环

  6. 6

    尝试在单引号Bash中使用变量

  7. 7

    使用sed替换包含引号和单引号的文本

  8. 8

    需要在文本文件中插入单引号以用作使用sed的SQL查询

  9. 9

    如何在Clojure宏中使用单引号或双引号?

  10. 10

    如何在JavaScript中使用单引号和双引号

  11. 11

    如何在MySQL查询中使用VB.NET参数连接单引号?

  12. 12

    如何在Bigquery查询文本中使用转义引号?

  13. 13

    在find命令中使用“单引号”或不使用单引号有什么区别

  14. 14

    在逗号上分割字符串,忽略单引号,并在单引号中使用逗号

  15. 15

    当我在PHP for SQL Management Studio中使用单引号时如何添加单引号

  16. 16

    如何在另一个单引号短语中使用awk的单引号?

  17. 17

    如何使用excel vba的Like函数匹配单引号(“)?

  18. 18

    Android中使用ORMLITE的多个查询条件

  19. 19

    使用动态查询在openquery中转义单引号

  20. 20

    使用Beautiful Soup findall在单引号之间提取文本

  21. 21

    在Shell脚本中使用单引号(')-RSYNC出现问题

  22. 22

    在参数中使用单引号来递归系统bash调用

  23. 23

    如何在单引号字符串中使用变量?

  24. 24

    无法在Golang中使用单引号分配字符串

  25. 25

    如何在Gatsby FrontMatter中使用单引号?

  26. 26

    如何在VSCode中使用eslint使文件成为单引号

  27. 27

    在字符串检查中使用单引号

  28. 28

    在EL的字符串中使用单引号

  29. 29

    为什么在$ _POST关联数组中使用单引号

热门标签

归档