Laboratorium Java – JDBC (Java DataBase Connectivity) [2h
Transkrypt
Laboratorium Java – JDBC (Java DataBase Connectivity) [2h
Laboratorium Java – JDBC (Java DataBase Connectivity) [2h] ✔ ✔ umożliwia połączenie się z dowolnym systemem bazodanowym DBMS (DataBase Management System) dla którego istnieje driver JDBC umożliwia wykonywanie poleceń SQL (Structured Query Language) Korzystanie • msql String String • mysql String String • postgres String String • oracle String String • odbc String String – z JDBC: driver = "com.imaginary.sql.msql.MsqlDriver"; url = "jdbc:msql://hostname:1114/dbname"; driver = "com.mysql.jdbc.Driver"; url = "jdbc:mysql://hostname:3306/dbname"; driver = "org.postgresql.Driver"; url = "jdbc:postgresql://hostname:5432/dbname"; driver = "oracle.jdbc.driver.OracleDriver"; url = "jdbc:oracle:thin:@hostname:1544:dbname"; driver = "sun.jdbc.odbc.JdbcOdbcDriver"; url = "jdbc:odbc:dbname"; ładowanie sterownika JDBC Class.forName(driver); – tworzenie połączenia z baza danych Connection con = DriverManager.getConnection(url, user, password); – tworzenie Statement Statement stmt = con.createStatement(); PreperedStatement – wykonanie polecenia SQL int status = stmt.executeUpdate(""); ResultSet result = stmt.executeQuery(""); Interface java.sql.Connection: .createStatement() - tworzy obiekt Statement do przesyłania poleceń SQL do bazy danych .prepareStatement(String) – tworzy obiekt PreparedStatement do przesyłania spreparowanych poleceń SQL do bazy danych .close() - zamyka natychmiastowo połączenie z bazą danych nie czekając na automatyczne zamknięcie .commit() - zatwierdza wszystkie zmiany od ostatniego commit/rollback oraz zwalnia wszystkie blokady trzymane na aktualnym połączeniu z bazą danych .rollback() - wycofuje wszystkie zmiany dokonywane w bieżącej transakcji oraz zwalnia wszystkie blokady trzymane na aktualnym połączeniu z bazą danych Laboratorium Java 15 (Opracowanie: Konrad Kurczyna) 1/2 Interface java.sql.Statement: .executeQuery(String) – wykonuje przekazane polecenie SQL, oraz zwraca obiekt ResultSet jako wynik wykonania tego polecenia .executeUpdate(String) – wykonuje przekazane polecenie SQL, które może być poleceniem typu INSERT, UPDATE albo DELETE lub też poleceniem SQL nie zwracającym odpowiedzi, takim jak polecenie SQL DDL Interface java.sql.ResultSet: .findColumn(String) - zwraca indeks kolumny o podanej nazwie .getInt(int/String) - zwraca wartość typu int określonej kolumny (przez indeks lub nazwę) w bieżącym wierszu .getString(String) - zwraca wartość typu String określonej kolumny (przez indeks lub nazwę) w bieżącym wierszu .getRow() - zwraca bieżący numer wiersza .getMetaData() - zwraca właściwości kolumn aktualnego obiektu .next() .previous() .first() .last() - przechodzi przechodzi przechodzi przechodzi do do do do następnego wiersza poprzedniego wiersza pierwszego wiersza ostatniego wiersza Interface java.sql.ResultSetMetaData: .getColumnCount() - zwraca liczbę kolumn danego obiektu ResultSet .getColumnName(int) - zwraca nazwę określonej kolumny .getColumnType(int) - zwraca typ określonej kolumny .getTableName(int) - zwraca nazwę tabeli określonej kolumny Przykład (postgres): import java.sql.*; public class DataBase { public static void main(String[] args) throws Exception { String driver = "org.postgresql.Driver"; String url = "jdbc:postgresql://localhost:5432/dbname"; String user = "root"; String password = ""; Class.forName(driver); Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); ResultSet result = stmt.executeQuery("SELECT * FROM table;"); ResultSetMetaData meta = result.getMetaData(); for (int i = 0; i < meta.getColumnCount(); i++) System.out.print(meta.getColumnName(i + 1) + " "); System.out.println(); while (result.next()) { for (int i = 0; i < meta.getColumnCount(); i++) System.out.print(result.getString(i + 1) + " "); System.out.println(); } } } Laboratorium Java 15 (Opracowanie: Konrad Kurczyna) 2/2