【发布时间】:2016-11-02 06:07:10
【问题描述】:
我一直在使用 Java 来存储 csv 文件中的一些记录。 这些记录之一是日期。这里的问题是我使用 JDBC 将这些记录存储在数据库中。现在,Java 的 Date 对象在将其放入数据库时显示错误。我已经坚持了一段时间。请让我知道如何解决这个问题。我在 mysql 中使用 Date 类型将其存储到数据库中。这是造成问题的部分。
DateFormat d1 = new SimpleDateFormat("yyyy-MM-dd");
Date d = new Date();
System.out.println(d1.format(d));
String sql = "INSERT INTO TESTING"+
"VALUES("+"DATE_FORMAT("+d+","+"'%Y-%m-%d'"+"))";
stmt.executeUpdate(sql);
如果我直接在 MySqlWorkBench 中执行此操作,它将正确存储日期。但是通过JDBC这是一个问题。
错误如下图:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Jun 30 14:04:03 IST 2016,'%Y-%m-%d'))' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1402)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1317)
at payex.writeDB(payex.java:221)
at payextestdrive.main(payextestdrive.java:11)
【问题讨论】:
-
“现在,Java 的 Date 对象在将其放入数据库时显示错误” - 什么错误?在这里使用字符串连接不是正确的解决方案...您绝对应该使用 PreparedStatement,但您需要使用
java.sql.Date,而不是java.util.Date。 -
你也可以参考这个帖子stackoverflow.com/questions/2305973/…
-
"INSERT INTO TESTING"+"VALUES...无法工作 -
您应该真正使用 PreparedStatement 和带有参数占位符的查询,而不是将值连接到查询字符串中。
标签: java mysql sql-server jdbc