1

Java を使用して MS SQL DB にクエリを実行する必要があります。次のコードを使用して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());

クエリ文字列を使用して DB を手動でクエリすると、結果を正常に取得できますが、res.getRow() は 0 を示します。

4

3 に答える 3

1

next()最初のレコードを取得するために含めるのを忘れました:

ResultSet res=stmt.executeQuery(querystr);
if(res.next()) // add this line
    System.out.print(res.getRow());
于 2012-06-27T10:40:59.113 に答える
0

このgetRow()メソッドは、現在の行の行番号を提供します。最初の行は番号 1、2 番目の行は番号 2 などです。

あなたのケースである現在の行がない場合、現在の行番号を0として与えます。

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

于 2012-06-27T10:44:52.517 に答える
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 オブジェクトは、DB のテーブルの 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());
}

すべての行番号を 1 つずつ出力します。

于 2012-06-27T11:23:43.160 に答える