簡単なプログラムで接続してみる。
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か…