【发布时间】:2011-06-15 16:52:49
【问题描述】:
我使用下面的代码
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:access");
String sql = "Select * from table";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery( sql );
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
for (int i = 1; i <= columns; i++) {
columnNames.addElement( md.getColumnName(i) );
}
while (rs.next()) {
Vector row = new Vector(columns);
for (int i = 1; i <= columns; i++){
row.addElement( rs.getObject(i) );
}
data.addElement( row );
}
rs.close();
stmt.close();
}catch(Exception e){
System.out.println(e);
}
它显示:
java.sql.SQLException:[Microsoft][ODBC Driver Manager] Invalid descriptor index
这是怎么引起的,我该如何解决?
【问题讨论】:
-
到底是在哪一行抛出的?您可以在堆栈跟踪的第一行中找到行号。该异常表明您正在尝试访问结果集中的错误/未知列。但是您问题中的代码 sn-p 并没有泄露这一点。
-
感谢代码更新。但是异常处理很差。将
System.out.println(e)行替换为e.printStackTrace()或仅throw e。通过这种方式,您可以获得完整的堆栈跟踪信息,并且可以了解发生此问题的行号。