English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

اتصال قاعدة البيانات JDBC

After installing the corresponding driver, you can use JDBC to establish a database connection.

The programming involved in establishing a JDBC connection is very simple. These are these four simple steps-

  • Import JDBC package:Add statements in Java programs import, to import the required classes in Java code.

  • Register JDBC driver: This step causes the JVM to load the required driver implementation into memory, thereby satisfying your JDBC requests.

  • Database URL configuration: This is to create a correctly formatted address that points to the database you want to connect to.

  • Establish connection object:Finally, write toDriverManagerthe object'sgetConnection( )The code for calling a method to establish an actual database connection.

Import JDBC package

Import statements tell the Java compiler where to find the classes referenced in the code and are placed at the beginning of the source code.

To use the standard JDBC package (which allows you to select, insert, update, and delete data in SQL tables), please add the following import to your source code

import java.sql.* ; // used for standard JDBC programs
import java.math.* ; // obtain BigDecimal and BigInteger support

注册 JDBC 驱动

在使用驱动程序之前,必须在程序中注册该驱动程序。注册驱动程序是将 Oracle 驱动程序的类文件加载到内存中的过程,因此可以将其用作 JDBC 接口的实现。

你只需要在你的程序中注册一次。您可以通过以下两种方式之一注册驱动程序。

方法I - Class.forName()

注册驱动程序的最常见方法是使用Java的 Class.forName() 方法,将驱动程序的类文件动态加载到内存中,内存会自动进行注册。此方法是可取的,因为它使您可以使驱动程序注册成为可配置和可移植的。

以下示例 Class.forName( ) 用于注册Oracle驱动程序

try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

您可以使用getInstance()方法来解决不兼容的JVM,但是随后您必须编写两个额外的Exception的代码,如下所示:

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("错误:无法加载驱动程序类!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("错误:加载时出现访问问题!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("错误:无法实例化驱动程序!");
   System.exit(3);
}

方法二- DriverManager.registerDriver()

您可以用来注册驱动程序的第二种方法是使用静态方法 DriverManager.registerDriver() .

如果使用的是不兼容JDK的JVM(例如Microsoft提供的JVM),则应使用 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);
}

صيغة URL لقاعدة البيانات

بعد تحميل محرك التشغيل، يمكنك استخدام طريقة 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
MySQLcom.mysql.jdbc.Driverjdbc:mysql://hostname/اسم قاعدة البيانات
ORACLEoracle.jdbc.driver.OracleDriverjdbc:oracle:thin:@hostname:رقم الميناء:اسم قاعدة البيانات
DB2COM.ibm.db2.jdbc.net.DB2Driverjdbc:db2:hostname:رقم الميناء/اسم قاعدة البيانات
Sybasecom.sybase.jdbc.SybDriverjdbc:sybase:Tds:hostname: رقم الميناء/اسم قاعدة البيانات

كل الأجزاء المبرز في صيغة URL هي ثابتة، تحتاج فقط إلى تغيير البقية بناءً على إعدادات قاعدة البيانات.

إنشاء كائن الاتصال

نحن قد قمنا بقائمة بأربعة أنواع DriverManager.getConnection() طريقة إنشاء عنصر الاتصال.

استخدام عنوان URL للبيانات الأساسية مع اسم المستخدم وكلمة المرور

يطلب شكل getConnection() الأكثر استخدامه منك إرسال عنوان URL للبيانات الأساسية،اسم المستخدموكلمة المرور

افترض أنك تستخدم Oraclethinإذا كان لديك دوّار، فإنه سيحدد قيمة host:port:databaseName للجزء الخاص بالبيانات الأساسية في URL.

إذا كان لديك على عنوان IP TCP/IP 192.0.0.1 على جهاز، ويكون اسم هذا الجهاز amrood، وأن Oracle Listener الخاص بك قد تم تكوينه لتشغيل على منفذ 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);

استخدام عنوان URL للبيانات الأساسية فقط

يحتاج شكل 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);

استخدام عنوان URL للبيانات الأساسية وعميل الخاصية

يحتاج شكل DriverManager.getConnection() الثالث إلى عنوان URL للبيانات الأساسية وعميل Properties -

DriverManager.getConnection(String url, Properties info);

عنصر الخاصية يحتوي على مجموعة من كلمات-القيم. يتم استخدامه لتحويل خصائص الدوّار إلى الدوّار أثناء استدعاء دالة getConnection().

لإقامة اتصال مشابه للعينة السابقة، استخدم الكود التالي-

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

في نهاية برنامج JDBC، يجب إغلاق جميع الاتصالات بالقاعدة البيانات بشكل واضح لإنهاء كل جلسة قاعدة بيانات. ولكن إذا نسيت، فإن مشغل القاعدة البيانات الخاص بـ Java يقوم بإغلاق الاتصال عند تنظيف الأحداث القديمة.

اعتماد النفايات في التجميع، خاصةً في برمجة قواعد البيانات، هو ممارسة برمجة سيئة. يجب أن تعتاد دائمًا على استخدام طريقة close() المرتبطة بالكائن الاتصال لغلق اتصال قاعدة البيانات.

لضمان إغلاق الاتصال، يمكنك تقديم بلاك بلاك "finally" في الكود.finallyالبлокيات دائمًا تنفذ، بغض النظر عن حدوث استثناء أو لا.

لإغلاق الاتصال المفتوح أعلاه، يجب عليك طلبًا طريقة close() كما يلي:

conn.close();

إغلاق الاتصال بوضوح يمكن أن يوفر موارد DBMS، مما يجعل مدير قاعدة البيانات الخاص بك سعيدًا.

للتفهم بشكل أفضل، نوصي بدراسةدليل أمثلة JDBC.