Как я могу найти, что ResultSet
, который я получил, запросив базу данных, пуст или нет?
Как определить, является ли ResultSet пустым или нет в Java?
Ответ 1
Сразу же после выполнения инструкции execute вы можете иметь оператор if. Например
ResultSet rs = statement.execute();
if (!rs.next()){
//ResultSet is empty
}
Ответ 2
Определенно это дает хорошее решение,
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
Сделайте это с помощью rs.next()
:
while (rs.next())
{
...
}
Если набор результатов пуст, код внутри цикла не будет выполняться.
Ответ 4
Если вы используете 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
Вычисляет размер java.sql.ResultSet:
int size =0;
if (rs != null) {
rs.beforeFirst();
rs.last();
size = rs.getRow();
}
(Источник)
Ответ 6
if (rs == null || !rs.first()) { //empty } else { //not empty }
Обратите внимание, что после вызова этого метода, если набор результатов не пуст, он находится в начале.