java.sql.SQLException: [Microsoft][ODBC Driver Manager] 无效的描述符索引
Posted
技术标签:
【中文标题】java.sql.SQLException: [Microsoft][ODBC Driver Manager] 无效的描述符索引【英文标题】:java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid descriptor index 【发布时间】:2012-09-27 17:49:48 【问题描述】:以下代码sn-p
String query = " SELECT * FROM accessdb.user;";
try
ResultSet rs = statement.executeQuery(query);
rs.first();
String s = "";
do
s = s + rs.getInt(0) + "\t\t" + rs.getString(1) + "\t\t"
+ rs.getString(2) + "\n";
rs.next();
while (!rs.isLast());
System.out.println(s);
catch (Exception ex)
System.out.println("\nError for firing query");
产生以下异常
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid descriptor index
这是怎么引起的,我该如何解决?
【问题讨论】:
【参考方案1】:rs.getInt(0)
JDBC 列索引从1
开始。所以你应该按如下方式检索数据:
s = s + rs.getInt(1) + "\t\t" + rs.getString(2) + "\t\t" + rs.getString(3) + "\n";
使用rs.get*()
中的列名要好得多,并且通常可以保护您的代码免受返回列顺序的任何更改。
【讨论】:
Thanx Vikdor 问题现已解决。我没有使用索引,而是使用了列的名称,这就是问题所在。【参考方案2】:使用
rs.get*()
中的列名要好得多,并且通常可以保护您的代码免受返回列顺序的任何更改。
我发现没有双引号的列名会引发同样的错误。
【讨论】:
以上是关于java.sql.SQLException: [Microsoft][ODBC Driver Manager] 无效的描述符索引的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.SQLException:getShort() 的值无效 - ''
java.sql.SQLException: SQL 语句在 org.hsqldb.jdbc.JDBCUtil.sqlException 处关闭
Oracle DB:java.sql.SQLException:关闭连接
Cause: java.sql.SQLException: 请求的转换无效 ; uncategorized SQLException for SQL []; SQL state [99999]; er
java.sql.SQLException: Access denied for user 'root'@'d001' (using password: YES)(代码