从MYSQL中选择出错

时间:2016-05-27 08:40:18

标签: java mysql

ResultSet rs = st.executeQuery(fetch_title);

行选择MYSQL时出错
  

错误消息:您的SQL语法中有错误;检查手册   对应于您的MySQL服务器版本,以获得正确的语法   使用附近' 53:53'在第1行

String test = "27-May-2016 11:09:53";
String fetch_title = "SELECT title FROM competitor_analysis WHERE cron_date_time="+test+"";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(fetch_title);

3 个答案:

答案 0 :(得分:5)

在查询中的语音标记中包含日期。

String fetch_title = "SELECT title FROM competitor_analysis WHERE cron_date_time='"+test+"'";

答案 1 :(得分:3)

您必须将MySQL查询中的字符串声明为字符串;你没有这样做会导致错误。

所以你需要在你的案例中插入''

所以你可以这样做:

String fetch_title = "SELECT title FROM competitor_analysis WHERE cron_date_time='"+test+"'";

答案 2 :(得分:3)

您的代码不安全,因为它有助于SQL Injection attacks,您需要使用PreparedStatement作为下一个代码:

String test = "27-May-2016 11:09:53";
PreparedStatement ps = connection.prepareStatement(
    "SELECT title FROM competitor_analysis WHERE cron_date_time=?"
);
ps.setString(1, test);
ResultSet rs = ps.executeQuery();

这种方法有两个主要优点:

  1. 如上所述更安全
  2. 它不易出错,因为您不必再​​明确地转义该值,因为它将由驱动程序本身管理