【问题标题】:java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid descriptor indexjava.sql.SQLException: [Microsoft][ODBC Driver Manager] 无效的描述符索引
【发布时间】: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

这是怎么引起的,我该如何解决?

【问题讨论】:

    标签: java jdbc


    【解决方案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*() 中的列名要好得多,并且通常可以保护您的代码免受返回列顺序的任何更改。

    我发现没有双引号的列名会引发同样的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多