当我将表单提交到JDBC连接页面时,它会出错。 我提交了一份包含这样的数据的表格
It's wrong
如下所示出现错误
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便使用附近的错误'在BOOLEAN模式中)和bot2 = 1'在第1行
我的代码是
String Query="SELECT * FROM ques WHERE MATCH(subject) AGAINST('"+vv+"' IN BOOLEAN MODE) and bot2=1";
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306 /wst","manohar","manohar");
stmt=conn.prepareStatement(Query);
rs=stmt.executeQuery(Query);
while(rs.next())
{
....
}
答案 0 :(得分:2)
请改为尝试:
String Query="SELECT * FROM ques WHERE MATCH(subject) AGAINST(? IN BOOLEAN MODE) and bot2=1";
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/wst","manohar","manohar");
stmt=conn.prepareStatement(Query);
stmt.setString(1, vv);
rs=stmt.executeQuery();
该技术称为“参数化查询”,它提供了几个优点,其中之一就是您不必担心在字符串参数中转义特殊字符。
答案 1 :(得分:0)
这是因为您没有在查询中转义字符串。
我认为你可以找到这个帖子有用:Java - escape string to prevent SQL injection