Link to download driver https://www.oracle.com/technetwork/database/application-development/jdbc/downloads/index.html
or search „oracle jdbc driver” in Google.
Miesiąc: Lipiec 2019
JDBC w 5 minut
JDBC (Java Database Connector) to niskopoziomowe operacje na bazie danych przy pomocy sterownika producenta.
Daje większe możliwości niż popularne frameworki wykorzystujące mapowanie obiektowo-relacyjne, jednak obsługa zapytań odbywa się większym nakładem pracy. Warto zacząć od nich nauke, bo bywają przydatne tam gdzie ORM nie dają rady 🙂
Tworzymy klasę do połączenia z bazą stosując wzorzec Singleton. Dlaczego zastosujemy ten wzorzec? Potrzebujemy tylko jednej instancji tego obiektu, więc tworzymy prywatny konstruktor.
1 2 3 4 5 |
public class DbUtil private static Connection connection = null; private DbUtil(){ } |
Obiekt stworzymy przy użyciu statycznej (czyli nie potrzebującej obiektu) metody. Tworzymy też warunek, w którym sprawdzamy czy obiekt istnieje.
1 2 3 |
public static Connection getConnection() { if (connection != null) //jesli nie zostal utworzony return connection;//to go tworzymy |
Wczytujemy parametry połączenia z naszego pliku db.properties* do zmiennych przy użyciu FileReader…
1 2 3 4 5 6 7 8 9 |
else { //a jeśli istnieje to try { FileReader reader = new FileReader("db.properties"); //jeśli sciezka jest bledna sprawdz sciezke przy uzyciu System.out.println(new File(".").getAbsolutePath()); Properties prop=new Properties(); prop.load(reader); String driver = prop.getProperty("driver"); String url = prop.getProperty("url"); String user = prop.getProperty("user"); String password = prop.getProperty("password"); |
I rejestrujemy sterownik przy pomocy Class.forName oraz przekazujemy DriverManager.getConnection ze szczegółami połączenia do obiektu connection.
1 2 |
Class.forName(driver); connection = DriverManager.getConnection(url, user, password); |
Zwracamy obiekt
1 |
return connection; |
*zawartość pliku db.properties
1 2 3 4 |
driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@192.168.56.100:1521:orcl user=oracle password=oracle |
Ważne: nie zapominamy o dołączeniu sterownika bazy Oracle w IDE Intelij IDEA.
https://wilamowski.it/index.php/2019/07/28/how-to-import-jdbc-oracle-driver-to-intelij-idea-project-ojdbc6-jar/
Przejdźmy do klasy testowej. Tworzymy obiekt connection przy pomocy metody statycznej:
1 |
Connection connection= DbUtil.getConnection(); |
Do wykonania zapytania SQL i połączenia z bazą tworzymy obiekt statement (interfejs Statement, java.sql). Potrzebny nam jest do wysłania zapytania do bazy. PS Jeżeli potrzebujemy zapytań zparametryzowanych lub zapytanie będzie używane wielokrotnie warto zainteresować się PreparedStatment.
1 |
Statement stmt = connection.createStatement(); |
Metoda executeQuery zwraca wynik zapytania. W tym samym momencie może być otwarty jeden Statement i jeden ResultSet.
1 2 |
String query = "SELECT * FROM test"; ResultSet result = stmt.executeQuery(query); |
Mapujemy encje i wyświetlamy rezultat wiersz po wierszu (.next() zwraca wartość logiczną)
1 2 3 4 5 |
while (result.next()){ int id = result.getInt("column1"); String imie = result.getString("imie"); String nazwisko = result.getString("nazwisko"); System.out.println(id + " "+ imie + " "+nazwisko);stmt.close(); |
—————————————————–
Projekt przedstawiający przykład połączenia z plikiem parametrów wzorcem singleton i prostym zapytaniem. Myślę, że dobrze to ukazuje idee bez zbędnego kodu
https://github.com/connoisseur0/JDBC-example
Source:
1. https://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html#creating_statements
2. https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html