Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在搜索中处理单引号_Java_Oracle_Struts2 - Fatal编程技术网

Java 在搜索中处理单引号

Java 在搜索中处理单引号,java,oracle,struts2,Java,Oracle,Struts2,如何在java中使用单引号生成查询语句。当我用单引号搜索一个单词时,它显示没有要显示的记录 例如,我有一个名字D'costa,我如何使用java搜索它 getSearchByUserSQL.append("SELECT * FROM SID_USERS "); getSearchByUserSQL.append("WHERE lower(FIRSTNAME) like ? OR lower(LASTNAME) like ?"); 您需要使用\'转义'。这里

如何在java中使用单引号生成查询语句。当我用单引号搜索一个单词时,它显示没有要显示的记录

例如,我有一个名字D'costa,我如何使用java搜索它

 getSearchByUserSQL.append("SELECT * FROM SID_USERS  ");
    getSearchByUserSQL.append("WHERE lower(FIRSTNAME) like  ? 
          OR lower(LASTNAME) like  ?");

您需要使用
\'
转义
'
。这里的
\
是转义字符。
您可以使用将
'
替换为
\'

Java中的转义序列:

\ b    /* \u0008: backspace BS */
\ t    /* \u0009: horizontal tab HT */
\ n    /* \u000a: linefeed LF */
\ f    /* \u000c: form feed FF */
\ r    /* \u000d: carriage return CR */
\ "    /* \u0022: double quote " */
\ '    /* \u0027: single quote ' */
\ \    /* \u005c: backslash \ */

在Java中,需要用反斜杠转义单引号。对于Oracle,您需要用一个单引号转义一个单引号。因此,
\'\'
应该做到这一点,因此在PL/SQL中,它变成了
'
,最后变成了
'

getSearchByUserSQL.append("SELECT * FROM SID_USERS  ");
getSearchByUserSQL.append("WHERE lower(FIRSTNAME) like \'PETE\'\'S\' OR lower(LASTNAME) like \'REPEAT\'\'S\'");
将“pete's”和“repeat's”作为名字。仅将单引号作为PL/SQL字符串中示例的文本。它被称为“字符串起始”

而您可以尝试手动转义所有字符串,这需要大量的工作,而且很困难(不同的数据库可能有不同的转义规则)。作为不应该这样做的进一步证据——看看apahe commons lang——正是出于这个原因,他们放弃了对2.*和3.*之间的SQL转义的支持

因此,如果将查询转换为,则可以使用插入动态值而不是占位符,JDBC驱动程序将为您完成所有转义。因此:

String myQuery = "SELECT * FROM SID_USERS WHERE lower(FIRSTNAME) like :1 OR lower(LASTNAME) like :2";
PreparesStatement ps = connection.prepareStatement(myQuery);
ps.setParameter(1,"Mickey");
ps.setParameter(2,"Mouse");
results = ps.execute();

你能解释一下如何在javause中转义吗使用
\'
在你想使用
'
的地方。这个链接没有为你打开me@jackyesind-为我工作很好。它基本上就是J2SE6Javadoc+1。但是关于注释,如果是6,那么应该是JavaSE6,而不是J2SE6()。第二条不见了:)