เพื่อเชื่อมต่อฐานข้อมูลด้วย 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() ทำงานแล้ว)