2017-05-10 78 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); 
}