Comment savoir si un jeu de résultats est vide ou non en Java? [dupliquer]

cette question a déjà une réponse ici:

Comment puis-je savoir que le ResultSet , que j'ai obtenu en interrogeant une base de données est vide ou pas?

30
demandé sur Vaishali 2010-02-25 07:50:21

6 réponses

immédiatement après votre instruction execute, vous pouvez avoir une instruction if. Par exemple

ResultSet rs = statement.execute();
if (!rs.next()){
//ResultSet is empty
}
33
répondu Paul 2010-02-25 05:42:31

certainement cela donne une bonne solution,

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
}
25
répondu purush 2013-11-13 03:10:15

Faire cela en utilisant le rs.next() :

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

si le résultat est vide, le code à l'intérieur de la boucle ne s'exécute pas.

10
répondu Scott Smith 2010-02-25 04:54:05

si vous utilisez rs.next () vous déplacerez le curseur, que vous devriez déplacer en premier() pourquoi ne pas vérifier directement en utilisant 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();
}
8
répondu Kachwahed 2011-09-04 18:09:09
if (rs == null || !rs.first()) {
    //empty
} else {
    //not empty
}

notez qu'après cet appel de méthode, si le jeu de résultats n'est pas vide, c'est au début.

4
répondu Santosh Tiwari 2011-07-01 14:09:30

calcule la taille du java.SQL.Jeu de résultats:

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

( Source )

4
répondu Dolph 2018-01-29 17:25:07