Archiwum postgresql.jar musi być dostępne ze ścieżki klas. Domyślnie znajduje się ono w /usr/local/pgsql/share/java, czyli można na przykład użyć
export CLASSPATH=$CLASSPATH:/usr/local/pgsql/share/java/postgresql.jar
Program postmaster musi być wystartowany z opcją -i.
Program powinien zawierać
import java.sql.*;
Nie należy importować pakietu org.postgresql!
Przed połączeniem się z bazą danych należy załadować sterownik. Można to zrobić dwoma sposobami.
Prostszy to użyć następującego wywołania
Class.forName("org.postgresql.Driver");
Uwaga: należy przechwycić wyjątek ClassNotFoundException. Oznacza on, że sterownik nie jest dostępny.
Powyższy sposób ogranicza nasz program do baz danych Postgresa. Zamiast niego można podać sterownik podczas wywołania Javy
java -Djdbc.drivers=postgresql.Driver mój-program
Teraz zmiana bazy danych często wymaga wyłacznie zmiany opcji w wywołaniu Javy.
Bazy danych identyfikuje się adresami URL
jdbc:postgresql//komputer:port/baza-danych |
Łączymy się z baza danych tworząc obiekt Connection
Connection bd = DriverManager.getConnection(url, user, password);
Otrzymanie wyjątku SQLException z komunikatem No driver available może oznaczać błędną ścieżkę do klas.
Połączenie zamykamy wołając
bd.clos();
Musimy najpierw utworzyć obiekt Statement
Statement stmt = db.createStatement();
Możemy go teraz użyć wielokrotnie do zadawania kolejnych zapytań
ResultSet result = stmt.executeQuery("SELECT * FROM Gatunki"); while (result.next()) System.out.println(result.getString(1)); result.close()
Trzeba jednak pamiętać, że dla obiektu Statement może istnieć tylko jeden zbiór wyników (każdy kolejny zamazuje poprzedni).
Przed pobraniem wyniku ze zbioru wyników należy wywołać metodę next(). Zwraca ona prawdę jeśli istnieje kolejny wiersz i równocześnie czyni go bieżącym.
Zgodnie ze specyfikację JDBC, zawartość pola można odczytać tylko raz, choć obecny sterownik Postgresa pozwala na wielokrotny dostęp.
Polecenia modyfikacji wykonuje się pisząc
stmt.executeUpdate("UPDATE Zwierz SET wiek = wiek + 1"); while (result.next()) System.out.println(result.getString(1)); result.close()