Jak mogę stwierdzić, że ResultSet
, które otrzymałem przez wysłanie zapytania do bazy danych, jest puste, czy nie?Jak ustalić, czy ResultSet jest pusty, czy nie w Javie?
Odpowiedz
Natychmiast po instrukcji execute można uzyskać instrukcję if. Na przykład
ResultSet rs = statement.execute();
if (!rs.next()){
//ResultSet is empty
}
Oblicza rozmiar java.sql.ResultSet:
int size = 0;
if (rs != null) {
rs.beforeFirst();
rs.last();
size = rs.getRow();
}
(Source)
O ile mi wiadomo, że jest to zły pomysł ... przede wszystkim, trzeba upewnić się, że wynik może poruszać się do tyłu, po drugie, ty w tym celu wykonaj uderzenie wydajności. O wiele szybciej po prostu użyć zestawu wyników tylko do przodu i użyć pętli while (jak już sugerowali to inni tutaj). – user85116
Zgadzam się ... Głosowałem za zaakceptowaną odpowiedzią, która znacznie bardziej odpowiada na pytanie. – Dolph
Dolph - NICE !!!!! –
Czy to za pomocą rs.next()
:
while (rs.next())
{
...
}
Jeśli tabela wynikowa jest pusta, kod wewnątrz pętli nie można wykonać.
Jeśli używasz rs.next() można przesunąć kursor, niż powinien przenieść pierwszy() dlaczego nie sprawdzić przy użyciu pierwszy() bezpośrednio?
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();
}
Zgadzam się. Dodałem poniższy kod (nie mogę dołączyć kodu z komentarzem). –
pewno daje to dobre rozwiązanie,
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
}
- 1. Sprawdź, czy ResultSet jest pusty w Javie
- 2. Jak ustalić, czy NSString jest pusty?
- 3. Jak ustalić, czy postać jest literą w Javie?
- 4. Jak sprawdzić, czy obiekt JSON jest pusty w Javie?
- 5. Jak ustalić, czy strona podręczna jest otwarta, czy nie?
- 6. Jak ustalić, czy pole wyboru DOJO jest zaznaczone, czy nie?
- 7. Jak ustalić, czy wiersz tabeli jest widoczny czy nie?
- 8. Jak ustalić pusty wiersz?
- 9. Sprawdź, czy plik jest pusty
- 10. Czy jest to dobry sposób, aby ustalić, czy plik jest wykonywalny w Javie
- 11. Magento Jak sprawdzić, czy koszyk jest pusty, czy nie?
- 12. Jak ustalić, czy Kopiowanie lokalne jest konieczne?
- 13. Jak ustalić, czy powiązanie szyn jest przyspieszone?
- 14. Jak ustalić, czy obiekt istnieje w tablicy, czy nie javascript
- 15. Jak ustalić, czy IType jest klasą abstrakcyjną?
- 16. Jak ustalić, czy jednostka doktrynalna jest trwała?
- 17. Jak ustalić, czy drzewo binarne jest kompletne?
- 18. Jak ustalić, czy jest oczekiwany semafor wysyłkowy?
- 19. Jak ustalić, czy ścieżka jest podkatalogiem innej?
- 20. Jak sprawdzić, czy łańcuch nie jest pusty i nie jest pusty w serwerze SQL?
- 21. Jak ustalić, czy ParameterInfo jest typu ogólnego?
- 22. Jak ustalić, czy typ jest typem kolekcji?
- 23. Jak ustalić, czy połączenie internetowe jest dostępne?
- 24. Jak ustalić, czy obiekt jQuery jest odroczony?
- 25. Jak ustalić, czy tabela sql jest tymczasowa?
- 26. Jak ustalić, czy znak jest chiński znak
- 27. Jak ustalić, czy język jest rekurencyjny czy rekursywnie przeliczalny?
- 28. Jak ustalić, czy kolumna widoku jest wyprowadzona czy stała?
- 29. Python - Sprawdź, czy plik jest pusty, czy nie.
- 30. Java - Sprawdź, czy JTextField jest pusty czy nie
jednak, jeśli zestaw wyników nie jest pusty, przesunąłeś teraz kursor, skutecznie pomijając pierwszy wiersz. – monopoint
@monopoint dokładnie – momomo
@Paul Uważam, że powinieneś zaktualizować swoją odpowiedź, aby ją zakończyć, resetując kursor tuż przed pierwszym wierszem bloku else, jeśli nie jest pusty, np. 'Else {rs.beforeFirst(); } ' – sactiw