Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

มีกี่วิธีในการ Register JDBC Driver ใน Java?

เพื่อเชื่อมต่อฐานข้อมูลด้วย JDBC ต้องโหลดและลงทะเบียน Driver มี 2 วิธี

วิธีที่ 1: Class.forName()

เมธอด forName() ของคลาส Class รับชื่อคลาสเป็น String โหลดเข้าหน่วยความจำ แล้ว Driver จะลงทะเบียนตัวเองอัตโนมัติ

Class.forName("com.mysql.jdbc.Driver");

ตัวอย่าง


import java.sql.*;

public class RegisterDriverExample {
    public static void main(String args[]) throws SQLException {
        // Register Driver
        Class.forName("com.mysql.jdbc.Driver");
        
        // Get Connection
        String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("Connection established: " + con);
    }
}

วิธีที่ 2: DriverManager.registerDriver()

เมธอด registerDriver() ของ DriverManager รับออบเจ็กต์ Driver ลงทะเบียนกับ JDBC Driver Manager


Driver myDriver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(myDriver);

ตัวอย่าง


import java.sql.*;

public class RegisterDriverExample {
    public static void main(String args[]) throws SQLException {
        // Register Driver
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        
        // Get Connection
        String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("Connection established: " + con);
    }
}

ผลลัพธ์ (ทั้ง 2 วิธี)

Connection established: com.mysql.jdbc.JDBC4Connection@4fccd51b

ข้อสังเกต

  • JDBC 4.0+ (Java 6+) ไม่ต้อง register โดยตรง ถ้า driver jar อยู่ใน classpath (Service Provider Mechanism)
  • Class.forName() เป็นวิธีเก่า แต่ยังใช้กันทั่วไป
  • registerDriver() อาจทำให้ driver โหลดซ้ำได้ (ถ้า Class.forName() ทำงานแล้ว)