接続してみる

簡単なプログラムで接続してみる。


package db2sample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

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 {
conn = DriverManager
.getConnection("jdbc:db2://localhost:50000/sample",
"db2admin", "db2admin");
} 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)

原因が分からないので、ログを出してみる。


try {
DriverManager.setLogStream(System.out);

[ibm][db2][jcc] BEGIN TRACE_DIAGNOSTICS
[ibm][db2][jcc][SQLException@1bd0dd4] java.sql.SQLException
[ibm][db2][jcc][SQLException@1bd0dd4][Throwable@d70d7a] java.io.UnsupportedEncodingException
[ibm][db2][jcc][SQLException@1bd0dd4][Throwable@d70d7a] Message = Cp897
[ibm][db2][jcc][SQLException@1bd0dd4][Throwable@d70d7a] Stack trace follows
java.io.UnsupportedEncodingException: Cp897
at sun.io.Converters.getConverterClass(Converters.java:215)
at sun.io.Converters.newConverter(Converters.java:248)

文字コードが問題か…つーか文字コードってどこで設定するんだ?とググるが分からず。

DB2本を読んでみると「Type4 JDBCドライバーとして日本語を利用するには、IBM JDKが必要です。」とある。
原因かどうか分からないが、Type4→Type2にしてみる。

SQLLIB\BINにパスを通して…


conn = DriverManager.getConnection("jdbc:db2:sample", "db2admin",
"db2admin");

とりあえず、接続/切断は成功。Type2か…