在JSP文件中连接SQL字符串查询

时间:2016-04-24 18:50:20

标签: java sql jsp

我有一个html页面,允许用户输入特定的搜索字词来查询我创建的数据库。我遇到的问题是,当我传递字符串以执行sql查询时,它不会将查询包装在单引号中,这是在sql数据库中搜索字符串匹配所必需的。这是我目前的代码:

//Create a statement for the sql queries  
java.sql.Statement stmt = conn.createStatement();

//Get results from queries entered  
String result_event_name = request.getParameter("event_name");

//Create query string   
String sqlQuery_event  = "SELECT event_name FROM event where event_name = " + "\'" + result_event_name + "\'";

//execute query  
java.sql.ResultSet rs_event = stmt.executeQuery(sqlQuery_event);`

这是我得到的错误:

SQLException: ERROR: syntax error at end of input Position: 49

我尝试使用prepare语句 - 返回相同的错误
我试了一下没有转义的查询 - 返回相同的错误
我尝试没有单引号 - 返回相同的错误

1 个答案:

答案 0 :(得分:0)

  1. 单引号'只需要一次LIKE '%\'%'
  2. 即可转义
  3. 但要查询反斜杠\,您需要双重转义为LIKE '%\\\\%'
  4. 如果您想查询反斜杠+单引号\',请点击'%\\\\\'%' (有5个反斜杠)
  5. Explanation Source摘录:

      

    因为MySQL在字符串中使用C转义语法(例如,“\ n”到   代表一个换行符),你必须加倍你使用的任何“\”   在LIKE字符串中。例如,要搜索“\ n”,请将其指定为“\ n”。   要搜索“\”,请将其指定为“\”;这是因为反斜杠   解析器剥离一次,模式匹配时再次剥离   制作,留下一个反斜杠来匹配。

    信用转到xchiltonx

    资源链接:

    mysql - How to handle query search with special characters /(forward slash) and \(backslash)