使用AND或OR条件手动构建SQL查询时的MySql syntaxErrorException

时间:2015-05-12 08:56:16

标签: java mysql sql jdbc

我正在使用JSP,Servlets和Mysql开发一个简单的Web应用程序。我在Mysql数据库中有一个叫做注释的表。我想只根据' OR'来获取记录。和' AND'来自Mysql。但不幸的是我得到了一个jdbc-Mysql Synatax异常。我正在编写SQL查询,如下所示:

dbconnection=new dbconnection();
            connection=dbconnection.setConnection();
            Transcript_ID=request.getParameter("Transcript_ID");
            Condition_1=request.getParameter("Condition_1"); // Can be "OR" or "AND".
            Gene_Symbol=request.getParameter("Gene_Symbol"); 
            Condition_2=request.getParameter("Condition_2"); // Can be "OR" or "AND".
            Molecular_Function=request.getParameter("Molecular_Function");
            Condition_3=request.getParameter("Condition_3"); // Can be "OR" or "AND".
            Biological_Process=request.getParameter("Biological_Process");
            stmt=connection.createStatement();
            query="select * from annotations where ID='"+Transcript_ID+"','"+Condition_1+"',Gene_Symbol='"+Gene_Symbol+"','"+Condition_2+"',"+ "Molecular_Function='"+Molecular_Function+"','"+Condition_3+"',Biological_Process='"+Biological_Process+"'";

我在控制台中遇到的错误是

  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'' OR',',' OR',' OR'中使用正确的语法, Molecular_Function =''' OR',Biological_Process ='''在第1行

任何人都可以指导我在我的sql语法中出错的地方。

3 个答案:

答案 0 :(得分:1)

从条件

中删除逗号
query="select * from annotations where ID='"+Transcript_ID+"' "+Condition_1+" Gene_Symbol='"+Gene_Symbol+"' "+Condition_2+" "+ "Molecular_Function='"+Molecular_Function+"' "+Condition_3+" Biological_Process='"+Biological_Process+"'";

答案 1 :(得分:0)

您不是替换AND / OR结,而是替换逗号。

请让我们看看生成代码的sql语句。

答案 2 :(得分:0)

不要在sql语句中添加“,”删除逗号并添加类似和/或的条件,或者你可以像('abc','cba')那样使用Gene_Symbol