Wprowadzenie do oświadczeń
Wszystkie zapytania SQL można warunkowo podzielić na dwie grupy:
- Pobieranie danych — obejmuje to instrukcję SELECT .
- Modyfikowanie danych — obejmują one instrukcje INSERT , UPDATE i DELETE .
W przypadku pierwszej grupy używana jest znana nam już metoda interfejsu Statement - executeQuery() . Zasadniczo ta metoda wystarczy, aby zacząć. Obejmuje bardzo duży procent zapytań, których będziesz potrzebować w prawdziwej pracy.
Później przejdziemy do dalszych opcji, ale na razie radzę pamiętać - jeśli chcesz tylko pobrać dane z tabeli, to metoda executeQuery ( ) w zdecydowanej większości przypadków będzie właściwym wyborem.
Dla drugiej grupy żądań musisz użyć innej metody interfejsu Statement -executeUpdate() . W przeciwieństwie do metody executeQuery() , która zwraca ResultSet, ta metoda zwraca liczbę całkowitą, która informuje, ile wierszy w tabeli zostało zmienionych podczas wykonywania zapytania .
Na przykład możesz usunąć wszystkie wiersze z oświadczeniem pracownika DELETE FROM (więc bądź bardzo ostrożny). W takim przypadku metoda executeUpdate() zwróci liczbę usuniętych wierszy. W niektórych sytuacjach znajomość liczby zmienionych wierszy może być przydatna do budowania algorytmów do pracy z danymi.
W zasadzie możemy zakończyć to pytanie - widzieliśmy już najważniejsze. Do pobierania danych - executeQuery() . Aby zmienić dane -executeUpdate() .
Uzyskaj liczbę użytkowników w tabeli użytkowników za pomocą metody executeQuery() :
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
wykonaćUpdate()
Metoda executeUpdate() jest używana, gdy zapytanie zmienia coś w tabeli. To może być cokolwiek:
- Oświadczenie AKTUALIZACJA
- INSERT instrukcja
- USUŃ oświadczenie
- Oświadczenie o PROCEDURZE POWOŁANIA
Ta metoda zwraca liczbę zmienionych (lub usuniętych) wierszy.
Napiszmy prośbę, która zwiększy pensje wszystkich naszych pracowników o 1000 rubli.
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
Po uruchomieniu tego kodu zwrócił on na moim stole liczbę 6. Mój stół miał 6 wierszy. Więc wszystkie linie zostały zmienione.
wykonać()
Czasami w Twoim życiu mogą pojawić się sytuacje, kiedy nie wiesz dokładnie, jakie żądanie masz wykonać - wybór czy zmiana danych. W tym przypadku twórcy JDBC dodali do niego kolejną generyczną metodę -execute() .
Tej metody można użyć zamiast metod executeQuery() i executeUpdate() . Czy pamiętasz, czym różniły się te metody? Prawidłowy. Typ wyniku. Dlatego twórcy JDBC wymyślili takie rozwiązanie.
Metoda execute() zwraca wartość logiczną. Jeśli ta wartość ma wartość true , oznacza to, że trwa żądanie pobrania danych i należy wywołać metodę getResultSet() w celu pobrania danych. Przykład:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
Jeśli ta wartość to false , oznacza to, że żądanie zmiany danych było w toku i należy wywołać metodę getUpdateCount() w celu uzyskania liczby zmienionych wierszy. Przykład:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
Napiszmy metodę wyświetlającą wynik zapytania:
public void executeAndPrintSQLQuery(String sqlQuery) {
boolean hasResults = statement.execute(sqlQuery);
if ( hasResults ) {
ResultSet results = statement.getResultSet();
System.out.println(“Строки вашего wniosekа ниже: ”);
while (results.next()) {
Integer id = results.getInt(1);
String name = results.getString(2);
System.out.println(results.getRow() + ". " + id + "\t"+ name);
}
}
else {
int count = statement.getUpdateCount();
System.out.println(“Liczba ciągów nazw: ” + count);
}
}
W ten sposób metoda execute() jest zwykle używana w praktyce.
GO TO FULL VERSION