2017-05-10 117 views
0

我正在使用以下代碼來訪問sql server數據庫表記錄。我可以確認表格列已被檢索。但由於某些原因,它不檢索任何行。我錯過了什麼?不從SQL Server檢索記錄

我正在使用遠程服務器MS SQL Server。

try { 
    try { 
     Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    try { 
     Connection DbConn = DriverManager.getConnection("jdbc:jtds:sqlserver://ServerName/DBName;user=sa;password=password"); 
     Statement stmt = DbConn.createStatement(); 
     ResultSet reset = stmt.executeQuery("select * from tblUser"); 

     String str = reset.getString(1); 
     DbConn.close(); 
    } catch (SQLException e) { 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

回答

1

需要調用ResultSet#next()推進光標移動到結果集的第一條記錄。從Javadoc

將光標從當前位置移動一行。結果集遊標最初位於第一行之前;下一個方法的第一個調用使第一行成爲當前行;第二次調用使第二行成爲當前行,依此類推。

所以,你的代碼應該是這樣的:

try { 
    String cs = "jdbc:jtds:sqlserver://ServerName/DBName;user=sa;password=password"; 
    Connection DbConn = DriverManager.getConnection(cs); 
    Statement stmt = DbConn.createStatement(); 
    ResultSet reset = stmt.executeQuery("select * from tblUser"); 

    while (reset.next()) { 
     String str = reset.getString(1); 
     // do something with this record 
    } 
    DbConn.close(); 
} catch (SQLException e) { 
    // handle exception here 
} 
1

初始指針位於第一行之前,所以如果你想第一個結果就像在你的榜樣,做:

if(reset.next()) { 
    String s = r.getString(1); 
}