【问题标题】:Java mySql WHERE AND WHERE error [closed]Java mySql WHERE AND WHERE 错误 [关闭]
【发布时间】:2018-01-13 16:21:12
【问题描述】:

请帮我看看这段代码有什么错误?

sql = "SELECT * FROM work_book WHERE mikor >= " + startTime + "AND mikor <= " + endTime;
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);

还有错误信息:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 'mikor

感谢您的帮助!

【问题讨论】:

  • 永远不要使用字符串连接来构建 SQL 语句。为什么,以及该怎么做:bobby-tables.com
  • 投票关闭为拼写错误您在开始时间和AND 之后缺少一个空格。
  • 学会使用参数就不会有这个问题了。
  • 谢谢!那是错。

标签: java mysql sql jdbc


【解决方案1】:

我认为您的问题是错字,这是因为您错过了startTimeAND 运算符之间的空格:

" + startTime + "AND mikor <= "
//---------------^

但重要的事情:

Date应该在两个引号'startTime'之间,你的代码旁边可能是语法错误或SQL注入的受害者,所以改用PreparedStatement

sql = "SELECT * FROM work_book WHERE mikor >= ? AND mikor <= ?";
try (PreparedStatement pst = con.prepareStatement(sql);) {
    pst.setDate(1, startTime);
    pst.setDate(2, endTime);
    ...
}

【讨论】:

  • 如果startTime 存在引用问题,则错误会更早。 AND 之前没有空格是问题所在(嗯,那个问题)。这只是一个错字。
  • 谢谢,这是真的@T.J.Crowder 我在回答中提到了这一点
猜你喜欢
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多