不从SQL Server检索记录

时间:2017-05-10 08:57:41

标签: android 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();
}

2 个答案:

答案 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);
}