Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][Java] czy istnieje rekord w bazie
gregi
post 11.04.2015, 19:48:03
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


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();
Go to the top of the page
+Quote Post
trueblue
post 12.04.2015, 07:14:52
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/192078/...a-sql-resultset


--------------------
Go to the top of the page
+Quote Post
gregi
post 13.04.2015, 18:48:39
Post #3





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


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() ?
Go to the top of the page
+Quote Post
Turson
post 13.04.2015, 18:56:33
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


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

Ten post edytował Turson 13.04.2015, 18:59:27
Go to the top of the page
+Quote Post
gregi
post 13.04.2015, 20:43:22
Post #5





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


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?

Ten post edytował gregi 13.04.2015, 20:45:17
Go to the top of the page
+Quote Post
Crozin
post 13.04.2015, 20:46:49
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 03:00