English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nachdem der entsprechende Treiber installiert wurde, können Sie JDBC zur Erstellung einer Datenbankverbindung verwenden.
Die Programmierung zur Erstellung einer JDBC-Verbindung ist sehr einfach. Dies sind diese einfachen vier Schritte-
Importieren Sie das JDBC-Paket:Fügen Sie in Ihrem Java-Programm eine Anweisung hinzu import, um die erforderlichen Klassen in Java-Code zu importieren.
Registrieren Sie das JDBC-Treiber: Dieser Schritt lädt die erforderliche Treiberimplementierung in den Speicher des JVM, um Ihre JDBC-Anfragen zu erfüllen.
Datenbank-URL-Konfiguration: Dies dient dazu, eine korrekte Adresse zu erstellen, die auf die Datenbank verweist, die Sie verbinden möchten.
Erstellen Sie eine VerbindungSchließlich schreiben Sie fürDriverManagerObjektgetConnection()Aufrufcodes der Methode, um die tatsächliche Datenbankverbindung herzustellen.
Import-Anweisungen informieren den Java-Compiler darüber, wo er die in der Codezeile referenzierten Klassen finden kann und werden am Anfang der Quelldatei platziert.
Um den Standard-JDBC-Paket (es ermöglicht Ihnen, Daten in SQL-Tabellen auszuwählen, einzufügen, zu aktualisieren und zu löschen) zu verwenden, fügen Sie die folgenden Importe in Ihre Quelldatei hinzu
import java.sql.* ; // Für Standard-JDBC-Programme import java.math.* ; // Erhalten von BigDecimal- und BigInteger-Unterstützung
Bevor Sie den Treiber verwenden, müssen Sie ihn in Ihrem Programm registrieren. Die Registrierung des Treibers ist der Prozess, bei dem die Class-Datei des Oracle-Treibers in den Speicher geladen wird, sodass sie als Implementierung des JDBC-Interfaces verwendet werden kann.
Sie müssen den Treiber nur einmal in Ihrem Programm registrieren. Sie können den Treiber auf eine der folgenden beiden Arten registrieren.
Die häufigste Methode zur Registrierung eines Treibers in Java ist Class.forName() Diese Methode lädt die Class-Datei des Treibers dynamisch in den Speicher und registriert sie automatisch. Diese Methode ist bevorzugt, da sie es ermöglicht, den Treiber als konfigurierbar und portierbar zu registrieren.
Nachfolgender Beispielaufruf Class.forName( ) wird 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önnengetInstance() Methodeum inkompatible JVM zu lösen, aber Sie müssen anschließend zwei zusätzliche Exception-Codezeilen wie folgt schreiben:
try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); catch(ClassNotFoundException ex) { System.out.println("Fehler: Die Klasse des Treibers kann nicht geladen werden!"); System.exit(1; catch(IllegalAccessException ex) { System.out.println("Fehler: Bei der Ladung ist ein Zugriffsproblem aufgetreten!"); System.exit(2; catch(InstantiationException ex) { System.out.println("Fehler: Der Treiber kann nicht instanziert werden!"); System.exit(3;
Eine zweite Methode, um den Treiber zu registrieren, ist die Verwendung der statischen Methode DriverManager.registerDriver() .
Wenn Sie eine JVM verwenden, die mit dem JDK nicht kompatibel ist (z.B. die von Microsoft bereitgestellte JVM), sollten Sie registerDriver() 方法。
以下示例用于registerDriver()注册Oracle驱动程序-
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;
加载驱动程序之后,可以使用 DriverManager.getConnection ()方法建立连接。为了便于参考,让我列出 DriverManager.getConnection() 三种重载方法
getConnection(String url)
getConnection(String url, Properties prop)
getConnection(String url, String user, String password)
在这里,每种形式都需要一个数据库URL。数据库URL是指向您的数据库的地址。
制定数据库URL是与建立连接相关的大多数问题发生的地方。
下表列出了常用的JDBC驱动程序名称和数据库URL。
数据库 | JDBC驱动程序名称 | URL格式 |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://hostname/ databaseName |
ORACLE | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@hostname:port Number:databaseName |
DB2 | COM.ibm.db2.jdbc.net.DB2Driver | jdbc:db2:hostname:port Number/databaseName |
Sybase | com.sybase.jdbc.SybDriver | jdbc:sybase:Tds:hostname: port Number/databaseName |
URL格式中所有突出显示的部分都是静态的,您只需要根据数据库设置更改其余部分。
我们列出了三种 DriverManager.getConnection() 创建连接对象的方法。
getConnection() 最常用的形式要求您传递数据库URL,用户名和密码
假设您正在使用Oracle的thin驱动程序,则将为URL的数据库部分指定 host:port:databaseName 值。
如果您在TCP / IP地址192.0.0.1上拥有一个主机,其主机名为 amrood,并且您的Oracle监听器配置为在端口1521上,并且您的数据库名称为EMP,则完整的数据库URL将为-
jdbc:oracle:thin:@amrood:1521:EMP
现在,您必须使用正确的用户名和密码来调用方法getConnection(),以获取Connection对象,如下所示:
String URL = "jdbc:oracle:thin:@amrood:1521:EMP"; String USER = "username"; String PASS = "password" Connection conn = DriverManager.getConnection(URL, USER, PASS);
DriverManager.getConnection()方法的第二种形式仅需要数据库URL-
DriverManager.getConnection(String url);
但是,在这种情况下,数据库URL包含用户名和密码,并具有以下常规形式-
jdbc:oracle:driver:username/password@database
因此,可以如下创建上述连接-
String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP"; Connection conn = DriverManager.getConnection(URL);
DriverManager.getConnection()方法的第三种形式需要数据库URL和Properties对象-
DriverManager.getConnection(String url, Properties info);
属性对象包含一组关键字-值对。它用于在调用getConnection()方法期间将驱动程序属性传递给驱动程序。
Um eine Verbindung wie im obigen Beispiel zu erstellen, verwenden Sie folgenden Code-
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);
Am Ende eines JDBC-Programms wird verlangt, dass alle Verbindungen zu der Datenbank explizit geschlossen werden, um jede Datenbank-Sitzung zu beenden. Aber wenn Sie es vergessen, schließt der Java-Garbage Collector die Verbindung, wenn er alte Objekte aufräumen.
Vertrauen auf die Müllsammlung, insbesondere in der Datenbankprogrammierung, ist eine sehr schlechte Programmierpraxis. Sie sollten die Angewohnheit entwickeln, immer die mit dem Verbindungsobjekt verbundene close()-Methode zu verwenden, um Datenbankverbindungen zu schließen.
Um sicherzustellen, dass die Verbindung geschlossen wird, können Sie in Ihrem Code einen "finally"-Block bereitstellen.finallyDer 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 den close()-Methodenaufruf wie folgt verwenden:
conn.close();
Das explizite Schließen der Verbindung spart DBMS-Ressourcen und wird Ihren Datenbankverwalter zufrieden stellen.
Um ein besseres Verständnis zu bekommen, empfehlen wir Ihnen,JDBC-Beispielcode-Tutorial.