Java Database Connectivity
Z Wikipedie, otevřené encyklopedie
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. JDBC je součástí Javy SE („Standard Edition“) od JDK 1.1. Pro přístup ke konkrétnímu databázovému serveru je potřeba JDBC ovladač, který poskytuje tvůrce databázového serveru.
Obsah |
[editovat] Ú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.
[editovat] 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 autentifikace oproti uživatelskému jménu a heslu.
[editovat] 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());
}
}

