3

我尝试读出一个表格并将其写入一个 csv 文件。

while (rs2.next())
{
    Enumeration<String> en = sqlfields.keys();
    while (en.hasMoreElements())
    {
        String field = en.nextElement();
        String value = rs2.getString(field);
        bw.write(Kapseln + value + Kapseln + Trennzeichen);
    }

    bw.newLine();
    cur++;
}

但是,如果该字段是类型:DateTime,我会收到以下错误消息:

java.sql.SQLException: Cannot convert value 
'0000-00-00 00:00:00' from column 12 to TIMESTAMP.

为什么 Java 会尝试转换为时间戳?

我喜欢将值作为 String =>rs2.getString(field)

4

2 回答 2

3

zeroDateTimeBehavior="convertToNull"

在您的 JDBC 连接属性中。参考:http ://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html

编辑将使您的连接字符串如下所示:

jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull
于 2012-09-27T12:51:07.343 回答
0

以下代码工作正常。用这个检查你的代码... emp 表的第四个字段是 jDate,它是一个 DateTime 数据类型。

        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","test");

        System.out.println("Connection is : " + con);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("select * from emp");

        //stmt = con.createStatement();

        while(rs.next()) {
            String value = rs.getString(4);
            System.out.println(value);
        }
        System.out.println("Connection is : " + con);
        con.close();
于 2012-09-27T14:03:28.980 回答