Javaプログラムを動かしてみる

接続/切断に成功したので、現在時刻を取得してみる。


package db2sample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;

public class Hoge {

public static void main(String[] args) {
try {
exec();
} catch (Exception e) {
e.printStackTrace();
}
}

private static void exec() throws ClassNotFoundException, SQLException {
Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection conn = null;

try {
//DriverManager.setLogStream(System.out);
conn = DriverManager.getConnection("jdbc:db2:sample", "db2admin",
"db2admin");
Statement stmt = conn.createStatement();
ResultSet rs = stmt
.executeQuery("SELECT current timestamp FROM sysibm.sysdummy1");

rs.next();
Timestamp ts = rs.getTimestamp(1);

rs.close();
stmt.close();

SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(ts));
} finally {
if (conn != null)
conn.close();
}

}
}

で、また失敗…


com.ibm.db2.jcc.a.DisconnectException: encoding not supported!!
at com.ibm.db2.jcc.b.ba.a(ba.java:520)

ログを見るとCp1041が問題らしい。


[ibm][db2][jcc] BEGIN TRACE_DIAGNOSTICS
[ibm][db2][jcc][SQLException@1893efe] java.sql.SQLException
[ibm][db2][jcc][SQLException@1893efe][Throwable@186c6b2] java.io.UnsupportedEncodingException
[ibm][db2][jcc][SQLException@1893efe][Throwable@186c6b2] Message = Cp1041
[ibm][db2][jcc][SQLException@1893efe][Throwable@186c6b2] Stack trace follows
java.io.UnsupportedEncodingException: Cp1041
at sun.io.Converters.getConverterClass(Converters.java:215)
at sun.io.Converters.newConverter(Converters.java:248)

さて、どうしたもんか…