Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][Java] czy istnieje rekord w bazie
Forum PHP.pl > Forum > Przedszkole
gregi
Jak sprawdzić w Javie czy dany rekord istnieje w bazie danych MYSQL.
nie chciałbym tego obsługiwać przez try catch


  1. import java.sql.Connection;
  2. private Connection connection = null;
  3. private Statement statement = null;
  4. private PreparedStatement preparedStatement;
  5. private ResultSet resultset;
  6.  
  7.  
  8.  
  9. String query = "SELECT slowko_ang FROM Widok_user WHERE slowko_ang =cos '"
  10.  
  11. preparedStatement = connection.prepareStatement(query);
  12. resultset = preparedStatement.executeQuery();
gregi
preparedStatement.executeUpdate(); ta metoda zwraca ilość rekordów ale w przypadku Update
a jak uzyskać w ten sam efekt w przypadku SELECTA, ponieważ ta metoda nie zwraca int: preparedStatement.executeQuery() ?
Turson
Kod
String query = "SELECT count(slowko_ang) as count_rows FROM Widok_user WHERE slowko_ang =cos '"

preparedStatement = connection.prepareStatement(query);
resultset = preparedStatement.executeQuery();

int numberOfRows = resultset.getInt("count_rows");


pomijając to, że zapytanie jest niepoprawne - warunek where. Jako pseudokod to tak
gregi
nadal rzuca mi wyjątkiem jeżeli warunek po WHERE wskazuje na 0
  1. int punkty = 1000;
  2. String query = "SELECT punkty FROM Widok_user_waldek WHERE slowko_ang = '"
  3. + slowko_ang + "'";
  4. System.out.println(query);
  5. int numberOfRows;
  6. try {
  7. preparedStatement = connection.prepareStatement(query);
  8. resultset = preparedStatement.executeQuery();
  9.  
  10. resultset.next();
  11. numberOfRows = resultset.getInt(1)


resultset = preparedStatement.executeQuery(); rzuca mi wyjątkiem java.sql.SQLException: Illegal operation on empty result set.
Pytanie jakiej metody użyć aby zwracała w takim wypadky 0?
Crozin
1. Używasz preparedStatement i ręcznie doklejasz zew. parametr? Skorzystaj z bindowania.
2. Dostajesz wyjątek bo próbujesz pobrać dane z pierwszego wiersza wyników, w momencie kiedy masz ich zero (sprawdź sobie co zwraca Ci ResultSet.next()).
3. Skorzystaj z zapytania @Tursona wykorzystującego COUNT(), które zawsze zwróci Ci dokładnie jeden wiersz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.