web-dev-qa-db-fra.com

Comment savoir si un ResultSet est vide ou non en Java?

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

31
Yatendra Goel

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
}
34
Paul

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
}
26
purush

Pour ce faire, utilisez rs.next():

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

Si l'ensemble de résultats est vide, le code à l'intérieur de la boucle ne s'exécutera pas.

10
Scott Smith

Si vous utilisez rs.next (), vous déplacerez le curseur, alors vous devriez déplacer first () pourquoi ne pas vérifier directement avec 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
Kachwahed
 if (rs == null ||! rs.first ()) {
 //empty
} else {
 // not empty 
} 

Notez qu'après cet appel de méthode, si l'ensemble de résultats n'est pas vide, il se trouve au début.

5
Santosh Tiwari

Calcule la taille de Java.sql.ResultSet:

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

( Source )

4
Dolph