我正在构建一个 Java 应用程序来查询远程 SQL 数据库。我可以阅读除其中一列之外的所有内容。当我尝试阅读该专栏时,我的应用程序会永远挂起,而不会引发任何异常或错误。有人知道为什么吗?这是所有细节:
- 我正在使用的驱动程序是
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));
}
}
编辑:尝试读取列时应用程序挂起。在这种情况下, rs.getString()