0

任何时候我必须在 java 中处理日期/时间,这让我很难过

我正在尝试解析字符串并将其转换为日期对象以插入到preparepared 语句中。我一直试图让这个工作,但没有运气。当我去编译类时,我也会收到有用的错误消息。

“线程“主”java.lang.Error 中的异常:未解决的编译问题:PreparedStatement 类型中的方法 setDate(int, Date) 不适用于参数 (int, Date)”

嗯,WTF?

这是有问题的代码。

for(int i = 0; i < flights.size(); i++){

    String[] details = flight[i].toString().split(":"); 
    DateFormat formatter ; 
    formatter = new SimpleDateFormat("ddMMyyyy");
    Date date = formatter.parse(details[1]); 

    PreparedStatement pstmt = conn.prepareStatement(insertsql);
    pstmt.setString(1, details[0]);
    pstmt.setDate(2, date);
    pstmt.setString(3, details[2] + "00");
    pstmt.setString(4, details[3]);
    pstmt.setString(5, details[4]);
    pstmt.setString(6, details[5]);
    pstmt.setString(7, details[6]);
    pstmt.setString(8, details[7]);
    pstmt.setString(9, details[8]);
    pstmt.executeUpdate();

}
4

3 回答 3

8

PreparedStatement.setDate采用java.sql.Date,而不是java.util.Date

(出于兴趣,您为什么实际上没有将其视为编译时错误?如果您可以解决编译失败而无需在测试运行中到达该点,您的生活将变得更加轻松......)

于 2008-12-16T10:10:28.427 回答
4

我的猜测是你混合了 java.util.Date 和 java.sql.Date ...

于 2008-12-16T10:09:42.733 回答
1

字符串到 MySQL 日期/时间

import java.sql.Date;
import java.sql.Time;

 statement.setDate(4, Date.valueOf("2009-08-26"));
 statement.setTime(5, Time.valueOf("12:04:08"));
于 2009-08-26T17:06:15.260 回答