リモート SQL データベースにクエリを実行する Java アプリケーションを構築しています。1 つの列を除くすべての列を読み取ることができます。そのコラムを読み込もうとすると、例外やエラーが発生することなく、アプリケーションが永久にハングします。誰でも理由がわかりますか?詳細は次のとおりです。
- 私が使用しているドライバーは
sun.jdbc.odbc.JdbcOdbcDriver
、Java バージョン 6 アップデート 35 です。 - その列 (#214) は他の列と何ら変わりはありません。確認するために、次の System.out を実行しました。
System.out.println("\t" + resultset.getMetaData().getColumnName(i) + "\t" + resultset.getMetaData().getColumnDisplaySize(i) + "\t" + resultset.getMetaData().getColumnType(i) + "\t" + resultset.getMetaData().getColumnTypeName(214) + "\t" + resultset.getMetaData().getColumnClassName(i));
- 結果は次のとおりです。
214 WorkLog 65535 -1 LONGVARCHAR java.lang.String
- で値を読み取ろうとしました
resultset.getString(),resultset.getASCIIStream(),resultset.getCharacterStream()
が、成功しませんでした。
最後に、コードは次のとおりです。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:AR");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM HPD:HelpDesk WHERE \"CaseID+\" = '000000008815267'");
while (rs.next()) {
for (int i = 1;i<rs.getMetaData().getColumnCount();i++){
System.out.println(i + "\t" + rs.getMetaData().getColumnName(i) + "\t" + rs.getString(i));
}
}
EDIT : 列に読み込もうとすると、アプリケーションがハングします。この場合、rs.getString()