代码之家  ›  专栏  ›  技术社区  ›  Amit

如何在Java中查找结果集是否为空?[复制品]

  •  31
  • Amit  · 技术社区  · 15 年前

    这个问题已经有了答案:

    我怎么能找到 ResultSet ,我通过查询数据库得到的,是否为空?

    6 回复  |  直到 7 年前
        1
  •  34
  •   Paul    15 年前

    在执行语句之后,可以立即使用if语句。例如

    ResultSet rs = statement.execute();
    if (!rs.next()){
    //ResultSet is empty
    }
    
        2
  •  26
  •   Community Mohan Dere    12 年前

    这无疑是一个很好的解决方案,

    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
    }
    
        3
  •  10
  •   Scott Smith    15 年前

    使用这个 rs.next() :

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

    如果结果集为空,则不会执行循环内的代码。

        4
  •  8
  •   Kachwahed    14 年前

    如果使用rs.next(),您将移动光标,而不是移动第一个()。 为什么不直接使用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();
    }
    
        5
  •  4
  •   Santosh Tiwari    14 年前
    if (rs == null || !rs.first()) {
        //empty
    } else {
        //not empty
    }
    

    请注意,在此方法调用之后,如果结果集不是空的,则它位于开始处。

        6
  •  4
  •   Dolph    7 年前

    计算java.sql.resultset的大小:

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

    ( Source )

    推荐文章