34

ResultSetデータベースにクエリを実行して取得したが空であるかどうかを確認するにはどうすればよいですか?

4

6 に答える 6

37

execute ステートメントの直後に、if ステートメントを含めることができます。例えば

ResultSet rs = statement.execute();
if (!rs.next()){
//ResultSet is empty
}
于 2010-02-25T05:42:31.770 に答える
30

間違いなくこれは良い解決策を与えます、

ResultSet rs = stmt.execute("SQL QUERY");
// With the above statement you will not have a null ResultSet 'rs'.
// In case, if any exception occurs then next line of code won't execute.
// So, no problem if I won't check rs as null.

if (rs.next()) {
    do {
      // Logic to retrieve the data from the resultset.
      // eg: rs.getString("abc");
    } while(rs.next());
} else {
    // No data
}
于 2011-12-06T18:46:37.310 に答える
11

を使用してこれを行うrs.next()

while (rs.next())
{
    ...
}

結果セットが空の場合、ループ内のコードは実行されません。

于 2010-02-25T04:54:05.813 に答える
9

rs.next() を使用する場合は、first() を移動するよりもカーソルを移動します。first() を直接使用してチェックしないのはなぜですか?

    public void fetchData(ResultSet res, JTable table) throws SQLException{     
    ResultSetMetaData metaData = res.getMetaData();
    int fieldsCount = metaData.getColumnCount();
    for (int i = 1; i <= fieldsCount; i++)
        ((DefaultTableModel) table.getModel()).addColumn(metaData.getColumnLabel(i));
    if (!res.first())
        JOptionPane.showMessageDialog(rootPane, "no data!");
    else
        do {
            Vector<Object> v = new Vector<Object>();
            for (int i = 1; i <= fieldsCount; i++)              
                v.addElement(res.getObject(i));         
            ((DefaultTableModel) table.getModel()).addRow(v);
        } while (res.next());
        res.close();
}
于 2011-06-25T19:05:48.303 に答える
5
if (rs == null || !rs.first()) {
    //空の
} そうしないと {
    //空ではない
}

このメソッド呼び出しの後、結果セットが空でない場合は最初にあることに注意してください。

于 2011-07-01T14:09:30.887 に答える
4

java.sql.ResultSetのサイズを計算します。

int size = 0;
if (rs != null) {
    rs.beforeFirst();
    rs.last();
    size = rs.getRow();
}

出典

于 2010-02-25T04:53:59.860 に答える