使用PreparedStatement将日期插入MySQL数据库

我想使用预准备语句将字符串日期更新到MySQL数据库中。 我已经尝试了很多并且总是得到错误java.util.Date cannot parse into java.sql.Date或反之亦然。 我没有在这里import任何东西。 请根据您的回答导入。

 public class Date1 { public static void main(String args[]) { String source="2008/4/5"; SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); java.sql.Date d=(Date) format.parse(source); Class.forName("com.mysql.jdbc.Driver"); Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/employee", "root", "root"); PreparedStatement ps=con.prepareStatement("insert into ankur1 values(?)"); ps.setDate(1,(java.sql.Date) d); ps.executUpdate(); } } 

写这个

 java.sql.Date d= new java.sql.Date(format.parse(source).getTime()); 

而不是这个:

 java.sql.Date d=(Date) format.parse(source); 

因为您不能只将java.util.Date转换为其子类型java.sql.Date 。 你必须转换它。 另请注意,您的格式字符串与您的实际日期格式不符,正如Bill the Lizard所评论的那样。

java.sql.Timestamp date = new java.sql.Timestamp(new java.util.Date()。getTime());

pstmt.setTimestamp(1,date);

试试这可能有用..谢谢

这是解决此问题的另一种更简单的方法:

 preparedStatement = connect.prepareStatement("INSERT INTO test.TABLENAME VALUES (default, STR_TO_DATE( ?, '%m/%d/%Y'), STR_TO_DATE(?, '%l:%i %p'),?,?,?,?,?)"); 

或者,您可以替换“?” 有真实的数据。

这是我向mySQL插入日期和时间的方法,只是想出来了。

我们可以调整参数的种类以满足我们的数据格式,它简单而干净。