8

重複の可能性:
結果セットに1行以上あるかどうかを確認するにはどうすればよいですか?

executeQuery(String sql)SQLクエリの結果がゼロ行の場合は何が返されますか?オブジェクトを返す場合ResultSet、SQLクエリが何も返さなかったことをどのように検出しますか。

SQLクエリをSELECTステートメントと想定します。

4

7 に答える 7

17

ResultSet の次のメソッドを確認しましたか。最初に、ResultSet のカーソルは最初の行の前を指し、next() への最初の呼び出しは false を返し、ResultSet にデータがなかったことを意味します。ResultSet のサイズを取得する方法を参照してください。Java には結果セット用の直接の size() または length() メソッドがないためです。

于 2012-06-13T12:36:46.200 に答える
4

resultSet の next() メソッドは、カーソルを次の行に移動し、データが読み取られたかどうかを示すブール値を返します。通常、while ループで使用されます。

while (myresultset.next()){ //some statement; } あなたの場合、クエリに一致するデータがない場合、次のメソッドの最初の呼び出しは false を返します。

于 2012-06-13T12:37:47.973 に答える
3

ResultSet を返します。使用する

boolean hasResult = rs.next();

結果行があるかどうかを調べます。

于 2012-06-13T12:38:05.120 に答える
1

ゼロ行の空の結果セット、つまりresultSet.next()false を返します。

于 2012-06-13T12:36:52.033 に答える
0

ResultSetクエリが0レコードをフェッチすると、空が返されます。最初、カーソルは結果セットの前を指します。カーソルを呼び出すとresultset.next()、次のカーソルに移動しresultset(イテレータパターン)、true結果が存在する場合は戻り、それ以外の場合は単に戻りますfalse。この場合、next()メソッドへの最初の呼び出しはを返しますfalse

于 2012-06-13T12:51:23.717 に答える
0

返された が空の場合、この ResultSet に対するメソッドResultSetの最初の呼び出しの出力はnext()false を返します。

基本的に通常の手順は行の中の何かです

ResultSet rs = executeQuery("select ....");
while(rs.next()) {
    //do something with the results
}
于 2012-06-13T12:38:30.313 に答える
-1

メソッドを使用できますrs.getRow()

 if(rs.getRow() >= 1){
      //Has at least 1 result
    }

ソース:

/**
    * Retrieves the current row number.  The first row is number 1, the
    * second number 2, and so on.
    * <p>
    * <strong>Note:</strong>Support for the <code>getRow</code> method
    * is optional for <code>ResultSet</code>s with a result
    * set type of <code>TYPE_FORWARD_ONLY</code>
    *
    * @return the current row number; <code>0</code> if there is no current row
    * @exception SQLException if a database access error occurs
    * or this method is called on a closed result set
    * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
    * this method
    * @since 1.2
 */
      int getRow() throws SQLException;
于 2012-06-13T12:44:13.247 に答える