Kapitel 20. JDBC - databaseadgang

Kapitlet forudsættes ikke i resten af bogen.

Det forudsætter Kapitel 14 Undtagelser, og kendskab til databaser og SQL (Structured Query Language), og at du har en fungerende database, som du ønsker adgang til fra Java.

Adgang til en database fra Java sker gennem et sæt klasser, der under et kaldes JDBC (Java DataBase Connectivity) - en platformuafhængig pendant til Microsoft ODBC (Open DataBase Connectivity).

Klasserne ligger i pakken java.sql, så kildetekstfiler, der arbejder med databaser skal starte med:


  import java.sql.*;

20.1. Kontakt til databasen

At få kontakt til databasen er måske det sværeste skridt. Det består af to led:

  1. Indlæse driveren

  2. Etablere forbindelsen

Indlæsning af driveren sker ved at bede systemet indlæse den pågældende klasse, der derefter registrerer sig selv i JDBC-systemets driver-manager. Er det f.eks. en Oracle-database, skriver man


  Class.forName("oracle.jdbc.driver.OracleDriver");

Ofte skal man have en JAR-fil (et Java-ARkiv, en samling klasser pakket i zip-formatet) med en driver fra producenten. De nyeste drivere kan findes på http://www.javasoft.com under JDBC.

For en Oracle-database hedder filen classes12.zip og passer til en bestemt udgave af Oracle-databasen. Bruger man Oracle Jdeveloper, er den som standard med i projektets klassesti. Ellers skal den føjes til CLASSPATH (i JBuilder gøres det under Project Properties, Paths, Required Libraries)

Herefter kan man oprette forbindelsen med (for en Oracle-database):


  Connection forb = DriverManager.getConnection(
    "jdbc:oracle:thin:@oracle.cv.ihk.dk:1521:student", "stuk1001", "hemli'");

Første parameter er en URL til databasen. Den består af en protokol ("jdbc"), underprotokol ("oracle") og noget mere, der afhænger af underprotokollen. I dette tilfælde angiver det, at databasen ligger på maskinen oracle.cv.ihk.dk port 1521 og hedder student.

Anden og tredje parameter er brugernavn og adgangskode.

20.1.1. JDBC-ODBC-broen under Windows

Med Java under Windows følger en standard JDBC-ODBC-bro med, så man kan kontakte alle datakilder defineret under ODBC. Denne driver indlæses med:


  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Før du kan oprette forbindelsen, skal datakilden først være oprettet under ODBC i Windows' Kontrolpanel. Man angiver datakildens navn (her "datakilde1"), når forbindelsen oprettes, uden brugernavn og adgangskode:


  Connection forb = DriverManager.getConnection ("jdbc:odbc:datakilde1");