JSP SQL INSERT使用时间戳和准备好的语句格式错误

时间:2018-10-30 03:23:08

标签: java mysql jsp

在搜索有类似问题的人的stackoverflow之后,我找不到我的具体情况的答案。我正在格式化我的时间戳,以适应SQL插入时间戳的方式。我不断收到此错误:

您的SQL语法有误;检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在第1行的'show(theater_id,movie_id,st_time,end_time,lang)值(1,4,'2018-10-297 16:1')附近使用< / strong>

<%
Driver d = new Driver();
String entryString = "insert into show(theater_id, movie_id, st_time, end_time, lang) values(?,?,?,?,?);";
ArrayList<Object> vals = new ArrayList<Object>();

SimpleDateFormat date = new SimpleDateFormat("YYYY-MM-DD HH:mm:ss");

vals.add(new Integer(1));
vals.add(new Integer(4));
vals.add(date.format(Timestamp.valueOf("2018-10-24 16:10:0")));
vals.add(date.format(Timestamp.valueOf("2018-10-24 18:31:0")));
vals.add("English");

d.entry(entryString, vals);%>

public void entry(String entryString, ArrayList<Object> vals) {
    int i = 1;
    try {
        sql = dbconn.prepareStatement(entryString);
        for(Object o: vals) {
            sql.setObject(i,o);
            i++;
        }
        System.out.println(sql.toString()+"\n"+Arrays.toString(vals.toArray()));
        sql.execute();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

这也是println喷出的东西

com.mysql.cj.jdbc.ClientPreparedStatement: insert into show(theater_id, movie_id, st_time, end_time, lang) values(1,4,'2018-10-297 16:10:00','2018-10-297 18:31:00','English');
[1, 4, 2018-10-297 16:10:00, 2018-10-297 18:31:00, English]

1 个答案:

答案 0 :(得分:0)

String entryString = "insert into changeShowName(theater_id, movie_id, st_time, end_time, lang) values(?,?,?,?,?);";

SHOW CREATE VIEW 语句用于显示创建视图语句。 SHOW DATABASES语句用于列出MySQL服务器主机上的数据库。 SHOW SCHEMAS可以用作SHOW DATABASES的同义词。如果LIKE子句与 SHOW DATABASES 一起出现,则指示要匹配的数据库名称。 不要创建show table,因为show在mysql中是预定义的。