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 テーブルの 4 番目のフィールドは、DateTime データ型である jDate です。

        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 に答える