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(“Your request lines below:);
 
           	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(“Number of name strings:+ count);
  	}
}

W ten sposób metoda execute() jest zwykle używana w praktyce.