Ilość rekordów w bazie mysql

0

Cześć :)

Potrzebuję uzyskać ilość rekordów z tabeli w bazie mysql. Wiem, że zapytanie do bazy musi być takie: SELECT SQL_CALC_FOUND_ROWS SQL_NO_CACHE * FROM zadanie
Chcę żeby to zapytanie zwróciło mi liczbę typu int (niestety nie wiem jak to zrobić bo zwraca ale nie wiem jakiego typu) potrzebną do pętli, w której wypiszę wszystkie rekordy na stronie w tablicy.

Ma ktoś jakiś pomysł?
Z góry dziękuję za pomoc!

0

A nie możesz po prostu select count(*) from zadanie?

0

A no faktycznie, można tylko teraz pytanie jak mam to przypisać do np int ile;? Jak to powiedzieć javie, że będzie to na 100% wartość typu int i żeby to zaakceptowała?

0

count() zawsze zwróci Ci liczbę więc zwyczajnie zrzutuj to co zwróci zapytanie na int.

0

Bardzo dziękuję, zapomniałem o rzutowaniu...
Jeszcze małe pytanko jaka to będzie funkcja do pobrania tej liczby?
w query jest zapytanie select count(*) from zadanie
ResultSet rs = statement.executeQuery(query); System.out.println(rs+" ilosc rekordów");
Takie coś nie działa, dlaczego?

0

ResultSet, jak sama nazwa wskazuje, jest zbiorem rezultatów. To taki wraper do twojego wyniku, więc wpierw musisz jeszcze wydobyć twój wynik z tego wrapera, np kodem:

 
int count = rs.getInt(0);
0

Ok działa tylko musi być 1, a nie 0 rs.getInt(1).
Dziękuję za odpowiedzi ;)

0

Przepraszam za post pod postem ale mam jeszcze jedno pytanie, jeśli chcę pobrać rekord z bazy to tak:
(oczywiście zapytanie już jest inne SELECT * FROM zadanie WHERE id=28)

ResultSet rs = statement.executeQuery(query);
rs.next();
//wypisanie rekordu
System.out.println(rs.getString(1));

Czy coś pomieszałem?

0

W ten sposób wypiszesz pierwszą kolumnę z 1 wiersza wyników z tabeli zadanie, o ile taki istnieje. Niemniej powinieneś mieć tam chociażby jakiegoś ifa sprawdzającego czy w ogóle jest następny rekord no i bez sensu selectować * skoro wypisujesz jedną kolumnę.

0

tzn chcę wypisać wszystkie pola tam gdzie np. id=28 jest lepszy sposób na wypisanie tego niź System.out.println(rs.getString(1)+rs.getString(2)+rs.getString(3)+...);?

0

W samym JDBC nie. Możesz w argumentach podać nazwy kolumn zamiast indeksów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1