【发布时间】:2016-04-24 18:50:19
【问题描述】:
我有一个 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 语句 - 返回相同的错误
我尝试了没有转义的查询——返回相同的错误
我尝试不使用单引号 - 返回相同的错误
【问题讨论】:
-
try String sqlQuery_event = "SELECT event_name FROM event where event_name = " + "\\'" + result_event_name + "\\'";
-
为什么要使用不推荐使用的东西,只是避免在 JSP 中使用模板编写代码。
-
您可能还想了解准备好的语句以防止SQL injection