我想使用准备好的语句将字符串日期更新到MySQL数据库中。我已经尝试了很多,总是收到错误java.util.Date cannot parse into java.sql.Date
,反之亦然。我没有在这里导入任何东西。请根据您的回答导入。
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所说的那样。
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的方式,刚弄清楚。
我们可以调整参数的种类以符合我们数据的格式,这很容易而且很干净。