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

Podobne dokumenty