4

我想使用准备好的语句将字符串日期更新到 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();
    }
}
4

3 回答 3

7

写这个

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 评论的那样。

于 2012-10-16T13:59:21.833 回答
2
java.sql.Timestamp date = new java.sql.Timestamp(new java.util.Date().getTime());

pstmt.setTimestamp(1, date);

试试这个它可能会工作..谢谢

于 2013-04-06T10:27:05.280 回答
1

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

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

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

这就是我在 mySQL 中插入日期和时间的方式,只是想通了。

我们可以调整各种参数以适应我们的数据格式,简单明了。

于 2014-03-12T05:00:21.873 回答