我使用以下代码访问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();
}
答案 0 :(得分:1)
您需要调用ResultSet#next()
将光标前进到结果集的第一条记录。来自Javadoc:
将光标从当前位置向前移动一行。 ResultSet游标最初位于第一行之前;对方法的第一次调用使得第一行成为当前行;第二个调用使第二行成为当前行,依此类推。
所以你的代码应该是这样的:
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 :(得分:1)
初始指针位于第一行之前,因此如果您想要第一个结果,请执行以下操作:
if(reset.next()) {
String s = r.getString(1);
}