JDBC - Datenbankverbindungen
Nachdem Sie den entsprechenden Treiber installiert haben, ist es Zeit, eine Datenbankverbindung mit JDBC herzustellen.
Die Programmierung zum Herstellen einer JDBC-Verbindung ist recht einfach. Hier sind diese einfachen vier Schritte -
Import JDBC Packages: Hinzufügen import Anweisungen an Ihr Java-Programm, um erforderliche Klassen in Ihren Java-Code zu importieren.
Register JDBC Driver: Dieser Schritt bewirkt, dass die JVM die gewünschte Treiberimplementierung in den Speicher lädt, damit sie Ihre JDBC-Anforderungen erfüllen kann.
Database URL Formulation: Hiermit erstellen Sie eine ordnungsgemäß formatierte Adresse, die auf die Datenbank verweist, zu der Sie eine Verbindung herstellen möchten.
Create Connection Object:Codieren Sie abschließend einen Aufruf der getConnection () -Methode des DriverManager- Objekts , um die tatsächliche Datenbankverbindung herzustellen.
JDBC-Pakete importieren
Das Import Anweisungen teilen dem Java-Compiler mit, wo sich die Klassen befinden, auf die Sie in Ihrem Code verweisen, und befinden sich ganz am Anfang Ihres Quellcodes.
Fügen Sie Ihrem Quellcode die folgenden Importe hinzu , um das Standard-JDBC-Paket zu verwenden, mit dem Sie Daten in SQL-Tabellen auswählen, einfügen, aktualisieren und löschen können :
import java.sql.* ; // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support
JDBC-Treiber registrieren
Sie müssen den Treiber in Ihrem Programm registrieren, bevor Sie ihn verwenden. Das Registrieren des Treibers ist der Prozess, durch den die Klassendatei des Oracle-Treibers in den Speicher geladen wird, sodass sie als Implementierung der JDBC-Schnittstellen verwendet werden kann.
Sie müssen diese Registrierung nur einmal in Ihrem Programm durchführen. Sie können einen Treiber auf zwei Arten registrieren.
Ansatz I - Class.forName ()
Der häufigste Ansatz zum Registrieren eines Treibers ist die Verwendung von Java Class.forName()Methode, um die Klassendatei des Treibers dynamisch in den Speicher zu laden, der sie automatisch registriert. Diese Methode ist vorzuziehen, da Sie damit die Treiberregistrierung konfigurierbar und portabel machen können.
Im folgenden Beispiel wird Class.forName () verwendet, um den Oracle-Treiber zu registrieren.
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
Sie können verwenden getInstance() Methode zum Umgehen nicht konformer JVMs, aber dann müssen Sie zwei zusätzliche Ausnahmen wie folgt codieren:
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
catch(IllegalAccessException ex) {
System.out.println("Error: access problem while loading!");
System.exit(2);
catch(InstantiationException ex) {
System.out.println("Error: unable to instantiate driver!");
System.exit(3);
}
Ansatz II - DriverManager.registerDriver ()
Der zweite Ansatz, mit dem Sie einen Treiber registrieren können, ist die Verwendung der Statik DriverManager.registerDriver() Methode.
Sie sollten die registerDriver () -Methode verwenden, wenn Sie eine nicht JDK-kompatible JVM verwenden, wie die von Microsoft bereitgestellte.
Im folgenden Beispiel wird registerDriver () verwendet, um den Oracle-Treiber zu registrieren.
try {
Driver myDriver = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
Datenbank-URL-Formulierung
Nachdem Sie den Treiber geladen haben, können Sie mit dem eine Verbindung herstellen DriverManager.getConnection()Methode. Lassen Sie mich zum einfachen Nachschlagen die drei überladenen DriverManager.getConnection () -Methoden auflisten -
getConnection (String url)
getConnection (String url, Eigenschaften prop)
getConnection (String-URL, String-Benutzer, String-Passwort)
Hier benötigt jedes Formular eine Datenbank URL. Eine Datenbank-URL ist eine Adresse, die auf Ihre Datenbank verweist.
Beim Formulieren einer Datenbank-URL treten die meisten Probleme beim Herstellen einer Verbindung auf.
In der folgenden Tabelle sind die gängigen JDBC-Treibernamen und die Datenbank-URL aufgeführt.
RDBMS | JDBC-Treibername | URL-Format |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://Hostname / Datenbankname |
ORAKEL | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@Hostname: Portnummer: Datenbankname |
DB2 | COM.ibm.db2.jdbc.net.DB2Driver | jdbc:db2:Hostname: Portnummer / Datenbankname |
Sybase | com.sybase.jdbc.SybDriver | jdbc:sybase:Tds:Hostname: Portnummer / Datenbankname |
Alle hervorgehobenen Teile im URL-Format sind statisch und Sie müssen nur den verbleibenden Teil gemäß Ihrer Datenbankeinrichtung ändern.
Verbindungsobjekt erstellen
Wir haben drei Formen von aufgelistet DriverManager.getConnection() Methode zum Erstellen eines Verbindungsobjekts.
Verwenden einer Datenbank-URL mit einem Benutzernamen und einem Kennwort
Bei der am häufigsten verwendeten Form von getConnection () müssen Sie eine Datenbank-URL, einen Benutzernamen und ein Kennwort übergeben :
Angenommen, Sie verwenden Oracle thin Treiber, geben Sie einen Wert für host: port: databaseName für den Datenbankteil der URL an.
Wenn Sie einen Host unter der TCP / IP-Adresse 192.0.0.1 mit dem Hostnamen amrood haben und Ihr Oracle-Listener so konfiguriert ist, dass er Port 1521 überwacht, und Ihr Datenbankname EMP lautet, lautet die vollständige Datenbank-URL:
jdbc:oracle:thin:@amrood:1521:EMP
Jetzt müssen Sie die Methode getConnection () mit dem entsprechenden Benutzernamen und Kennwort aufrufen, um eine zu erhalten Connection Objekt wie folgt -
String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);
Nur eine Datenbank-URL verwenden
Eine zweite Form der DriverManager.getConnection () -Methode erfordert nur eine Datenbank-URL -
DriverManager.getConnection(String url);
In diesem Fall enthält die Datenbank-URL jedoch den Benutzernamen und das Kennwort und hat die folgende allgemeine Form:
jdbc:oracle:driver:username/password@database
Die obige Verbindung kann also wie folgt erstellt werden:
String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);
Verwenden einer Datenbank-URL und eines Eigenschaftenobjekts
Eine dritte Form der DriverManager.getConnection () -Methode erfordert eine Datenbank-URL und ein Eigenschaftenobjekt.
DriverManager.getConnection(String url, Properties info);
Ein Properties-Objekt enthält eine Reihe von Schlüsselwort-Wert-Paaren. Es wird verwendet, um Treibereigenschaften während eines Aufrufs der Methode getConnection () an den Treiber zu übergeben.
Verwenden Sie den folgenden Code, um dieselbe Verbindung wie in den vorherigen Beispielen herzustellen:
import java.util.*;
String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );
Connection conn = DriverManager.getConnection(URL, info);
JDBC-Verbindungen schließen
Am Ende Ihres JDBC-Programms müssen Sie explizit alle Verbindungen zur Datenbank schließen, um jede Datenbanksitzung zu beenden. Wenn Sie jedoch vergessen, schließt der Garbage Collector von Java die Verbindung, wenn veraltete Objekte bereinigt werden.
Sich auf die Garbage Collection zu verlassen, insbesondere bei der Datenbankprogrammierung, ist eine sehr schlechte Programmierpraxis. Sie sollten es sich zur Gewohnheit machen, die Verbindung immer mit der Methode close () zu schließen, die dem Verbindungsobjekt zugeordnet ist.
Um sicherzustellen, dass eine Verbindung geschlossen wird, können Sie in Ihrem Code einen "finally" -Block angeben. Ein finally- Block wird immer ausgeführt, unabhängig davon, ob eine Ausnahme auftritt oder nicht.
Um die oben geöffnete Verbindung zu schließen, sollten Sie die Methode close () wie folgt aufrufen:
conn.close();
Durch das explizite Schließen einer Verbindung werden DBMS-Ressourcen geschont, was Ihren Datenbankadministrator glücklich macht.
Zum besseren Verständnis empfehlen wir Ihnen, unser JDBC - Tutorial für Beispielcode zu lesen .