Ilość rekordów w bazie mysql

Ilość rekordów w bazie mysql
DU
  • Rejestracja:około 9 lat
  • Ostatnio:około 4 lata
  • Postów:143
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!

edytowany 1x, ostatnio: duzy
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
DU
  • Rejestracja:około 9 lat
  • Ostatnio:około 4 lata
  • Postów:143
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?

HI
  • Rejestracja:około 13 lat
  • Ostatnio:2 dni
  • Postów:1857
0

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

DU
  • Rejestracja:około 9 lat
  • Ostatnio:około 4 lata
  • Postów:143
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?

edytowany 3x, ostatnio: duzy
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • Postów:2787
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:

Kopiuj
 
int count = rs.getInt(0);
Shalom
Jeszcze musi next() zawołać na tym ResultSet
DU
  • Rejestracja:około 9 lat
  • Ostatnio:około 4 lata
  • Postów:143
0

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

edytowany 2x, ostatnio: duzy
DU
  • Rejestracja:około 9 lat
  • Ostatnio:około 4 lata
  • Postów:143
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)

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

Czy coś pomieszałem?

edytowany 1x, ostatnio: duzy
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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ę.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
DU
  • Rejestracja:około 9 lat
  • Ostatnio:około 4 lata
  • Postów:143
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)+...);?

edytowany 1x, ostatnio: duzy
T1
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:56
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.