导致此SQLException的原因是什么?

时间:2013-03-15 06:06:55

标签: java sql

我收到以下错误:

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本,用于在第1行''附近使用正确的语法。

尝试运行以下代码时:

String sql = "INSERT INTO `tutors`.`appointments`"
        + "(`tutorID`, `tuteeName`, `tuteeEmail`, `time`, `date`)"
        + ("VALUES(?, ?, ?, ?, ?");
 try {
     PreparedStatement ps = conn.prepareStatement(sql);
     ps.setInt(1, working.get(0).getTutorID());
     ps.setString(2, tuteeName);
     ps.setString(3, tuteeEmail);
     ps.setDate(4, date);
     ps.setTime(5, time);
     ps.executeUpdate();

什么是产生异常所指的' '?我只是学习在java中使用SQL,所以我确信这只是一个愚蠢的语法错误......

3 个答案:

答案 0 :(得分:7)

您需要在行之间留出间距,而不是关闭VALUES括号:

 String sql = "INSERT INTO `tutors`.`appointments`"
            + " (`tutorID`, `tuteeName`, `tuteeEmail`, `time`, `date`)"
            +  ("VALUES(?, ?, ?, ?, ?)");

答案 1 :(得分:1)

你的sql字符串问题。它应该是

"INSERT INTO `tutors`.`appointments`"
            + "(`tutorID`, `tuteeName`, `tuteeEmail`, `time`, `date`)"
            + "VALUES(?, ?, ?, ?, ?)";

答案 2 :(得分:0)

可能在你的第一个'('在第三行。

String sql = "INSERT INTO `tutors`.`appointments`"
    + "(`tutorID`, `tuteeName`, `tuteeEmail`, `time`, `date`)"
    + ("VALUES(?, ?, ?, ?, ?");

应该是

String sql = "INSERT INTO `tutors`.`appointments`"
    + " (`tutorID`, `tuteeName`, `tuteeEmail`, `time`, `date`)"
    + " VALUES(?, ?, ?, ?, ?");

在第二行和第三行的开头添加一些空格。