JDBC executeQuery无理由地显示错误

时间:2015-11-22 05:12:42

标签: java mysql jdbc

我正在使用MySQL编写一个简单的JDBC程序但是Whats'错误的一行。我没有看到任何错误,但下面提到的行在运行程序时显示错误

代码 -

ResultSet recs = psmt.executeQuery("select * from item_master where catid = "+id1 +"and des = '" +sString+"';");

错误 -

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在' des =' LG计算机附近使用' '在第1行

我还在MySQL中测试了这个查询并获得了输出 -

select * from item_master where catid = 2 and des = 'LG computer';

但Java不允许我执行此行。我也试过LIKE

select * from item_master where catid = 2 and des LIKE 'LG computer';

1 个答案:

答案 0 :(得分:2)

您在int之后错过了一个空格,并且您在查询中不需要分号。像,

"select * from item_master where catid = "+id1 +" and des = '" +sString+"'"

String.format("select * from item_master where catid = %d and des = '%s'", 
        id1, sString);

,我的偏好,使用PreparedStatement

String query = "select * from item_master where catid = ? and des = ?";
try (PreparedStatement ps = conn.prepareStatement(query)) {
   ps.setInt(1, id1);
   ps.setString(2, sString);
   try (ResultSet rs = ps.executeQuery()) {
       // ...
   }
} catch (SQLException e) {
   e.printStackTrace();
}