我必须使用java查询MS SQL DB

时间:2012-06-27 10:38:21

标签: java jdbc

我必须使用java查询MS SQL DB。我正在使用以下代码查询数据库

         Class.forName("net.sourceforge.jtds.jdbc.Driver");
         Connection conn = DriverManager.getConnection(
                 "jdbc:jtds:sqlserver://XXX.XX.XX>XX:1433/DBNAME", "USERNAME", "Password");

         querystr="select DATEDIFF(second,Finish_Time,ReqTime) As FinishDifference from DB.SCHEMA.TABLE where ID='123'";
         Statement stmt=conn.createStatement();
         ResultSet res=stmt.executeQuery(querystr);
         System.out.print(res.getRow());

当我使用查询字符串手动查询数据库时,我能够成功获取结果,但res.getRow()显示为0.

3 个答案:

答案 0 :(得分:1)

您忘记包含next()来获取第一条记录:

ResultSet res=stmt.executeQuery(querystr);
if(res.next()) // add this line
    System.out.print(res.getRow());

答案 1 :(得分:0)

getRow()方法给出当前行的行号。第一行是数字1,第二行是数字2,依此类推。

并且如果当前没有当前行,则将当前行号设为0。

http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSet.html#getRow()

答案 2 :(得分:0)

最初ResultSet返回当前光标位置。

ResultSet res=stmt.executeQuery(querystr);
res.getRow();// It will return 0 (Zero) because result set is pointing to begining of the first record

res对象指向数据库中表的第0个位置。当您在res.next();

的帮助下进行迭代时

如果你打电话

,它将转到下一条记录
 res.getRow();// It will return 1 because cursor is moved to 1st record of table.

试试这个。

while(res.next())
{
         System.out.println(res.getRow());
}

它将逐个打印所有行号。