AWWW-1st3.6-w09.tresc-1.0-Slajd8

From Studia Informatyczne

Parametryzacja poleceń SQL w JDBC

Parametryzacja poleceń SQL w JDBC


Aplikacje WWW często wykonują polecenia SQL, w których treść wstawiane są wartości wprowadzone przez użytkownika. Typowe sytuacje to wstawianie do bazy danych wartości wprowadzonych do formularzy czy zawężanie wyników zapytania w oparciu o warunki selekcji podane przez użytkownika. Wklejanie podanych przez użytkownika wartości do treści poleceń SQL za pomocą konkatenacji łańcuchów znaków jest niebezpieczne, gdyż umożliwia złośliwym użytkownikom modyfikację struktury polecenia SQL i wykonanie operacji, których aplikacja nie miała z założenia umożliwiać. Ta technika włamań do systemu jest znana pod nazwą SQL injection. Bezpiecznym sposobem wykonywania sparametryzowanych poleceń SQL w JDBC jest wykorzystanie obiektów PreparedStatement.

Polecenia PreparedStatement mają jeszcze jedną zaletę. Są prekompilowane i w przypadku wielokrotnego wykonania polecenia dla różnych wartości parametrów mogą być efektywniejsze niż polecenia Statement. Zależy to jednak od konkretnej platformy.

Na slajdzie pokazano przykład wykorzystania PreparedStatement do zmodyfikowania dwóch wierszy tabeli. Znaczenie wyróżnionych fragmentów kodu jest następujące:

1. Utworzenie sparametryzowanego obiektu PreparedStatement. Parametry są umieszczane w treści polecenia jako znaki zapytania. W przykładzie, parametrami są ustawiana wartość płacy i identyfikator pracownika, którego płaca ma być zmieniona.

2. Ustalenie wartości parametrów dla polecenia. Do tego celu służą metody setXXX() dla poszczególnych typów języka Java. Parametrami są numer parametru w zapytaniu i wartość. Do ustawienia wartości NULL dla parametru służy metoda setNull().

3. Uruchomienie polecenia – metodą executeUpdate(), gdyż polecenie w przykładzie nie jest zapytaniem. Dla zapytania byłaby użyta metoda executeQuery().

4. i 5. Powtórzenie kroków 2 i 3 dla innych wartości parametrów.

6. Zamknięcie obiektu PreparedStatement.


<< Poprzedni slajd | Spis treści | Następny slajd >>