2012-09-27 45 views
0

下面的代碼片段值java.sql.SQLException:[微軟] [ODBC驅動程序管理器]無效的描述符索引

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

rs.getInt(0)

JDBC列索引從1啓動。所以,你如下應檢索數據:

s = s + rs.getInt(1) + "\t\t" + rs.getString(2) + "\t\t" + rs.getString(3) + "\n"; 

rs.get*()使用的列名是好多了,保護你的代碼中列的順序任何變化返回,在一般。

+0

Thanx Vikdor問題現在解決了。而不是使用索引我用列的名稱,這就是問題所在。 –

0

rs.get*()中使用列名要好得多,並且一般情況下,您的代碼不會受到返回列順序的任何更改的影響。

我發現沒有雙引號的列名會引發同樣的錯誤。

相關問題