Java 字符串输入包含引号时出现MySQL语法错误

Java 字符串输入包含引号时出现MySQL语法错误,java,mysql,jsp,jdbc,Java,Mysql,Jsp,Jdbc,当我将表单提交到JDBC连接页面时,它给出了一个错误。 我提交的表格中有这样的数据 It's wrong 它给出一个错误,如下所示 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在布尔模式下使用near's error'和第1行的bot2=1'的正确语法 我的代码是 String Query="SELECT * FROM ques WHERE

当我将表单提交到JDBC连接页面时,它给出了一个错误。 我提交的表格中有这样的数据

It's wrong
它给出一个错误,如下所示

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在布尔模式下使用near's error'和第1行的bot2=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())
         {
            ....
         }
请尝试以下方法:

String Query=“从ques中选择*,其中匹配(主题)与(?在布尔模式下)且bot2=1”;
conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/wst“manohar”、“manohar”);
stmt=conn.prepareStatement(查询);
标准设置管柱(1,vv);
rs=stmt.executeQuery();

这种技术被称为“参数化查询”,它提供了几个优点,其中之一是您不必担心转义字符串参数中的特殊字符。

这是因为您没有在查询中转义字符串

我想你会发现这个帖子很有用: