Java Database Connectivity
Java Database Connectivity (známé spíše jako JDBC) je API pro programátory v programovacím jazyku Java, které definuje jednotné rozhraní pro přístup k relačním databázím.Pro přístup ke konkrétnímu databázovému serveru je potřeba JDBC ovladač, který poskytuje tvůrce databázového serveru. Přemostění JDBC-to-ODBC umožňuje propojení s jakýmkoli datovým zdrojem, který je přístupný pomocí ODBC v hostitelském prostředí Java Virtual Machine.
Úvod
JDBC API vzniklo jako vrstva mezi Java aplikací a vlastní komunikací s databází. Datové typy SQL lze získat z výsledku SQL dotazu jako instance Java tříd a s těmi pracuje aplikace. Naopak JDBC ovladač (driver) dokáže vkládat instance Java tříd do SQL dotazů a správně, v závislosti na zvolené databázi, je uložit, upravit apod. Takto lze vytvořit aplikaci nezávislou na zvoleném databázovém stroji. Nicméně je stále potřeba psát dotazy v SQL - naproti tomu stojí Hibernate.
Přístup k databázi
Identifikace databáze se děje na základě URI, Unified Resource Identifier. Formát tohoto URI je závislý na zvoleném JDBC driveru:
Příklady JDBC URI:
- MySQL: jdbc:mysql://server/jméno_databáze?characterEncoding=UTF-8
- Sybase: jdbc:sybase:Tds:server:port/jméno_databáze
- IBM AS400: jdbc:as400://server/jméno_databáze
- Oracle: jdbc:oracle:thin:@server:port:jméno_databáze
Příklady JDBC driverů:
- MySQL: com.mysql.jdbc.Driver
- Sybase: com.sybase.jdbc3.jdbc.SybDriver
- IBM AS400: com.ibm.as400.access.AS400JDBCDriver
- Oracle: oracle.jdbc.driver.OracleDriver
Samozřejmostí je autentizace uživatelským jménem a heslem.
Příklad
public void connect() throws DriverNotFoundException, ConnectionFailedException {
try {
Class.forName(jdbcDriver);
connection = DriverManager.getConnection(dbURI, user, passwd);
} catch(ClassNotFoundException e) {
throw new DriverNotFoundException(e.getMessage());
} catch(SQLException e) {
throw new ConnectionFailedException(e.getMessage());
}
}
Nezapomínejte uzavírat navázaná spojení!
public void disconnect() throws DisconnectFailedException {
try {
connection.close();
} catch(SQLException e) {
throw new DisconnectFailedException(e.getMessage());
}
}