以下代码段
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
这是如何引起的?如何解决?
答案 0 :(得分:0)
rs.getInt(0)
JDBC列索引从1
开始。所以你应该按如下方式检索数据:
s = s + rs.getInt(1) + "\t\t" + rs.getString(2) + "\t\t" + rs.getString(3) + "\n";
使用rs.get*()
中的列名要好得多,并且通常可以保护代码免受返回列顺序的任何更改。
答案 1 :(得分:0)
使用
rs.get*()
中的列名要好得多,并且通常可以保护代码免受返回列顺序的任何更改。
我发现没有双引号的列名会引发相同的错误。