#java.sql.Driver

# 描述

java.sql.Driver是JDBC规范中定义的数据库驱动核心接口,该接口位于java.sql包下,JDK自带该接口定义,它的核心作用是:

  • 用于识别可连接的URL。

  • 定义Java程序与具体数据库驱动的交互规范。

  • 负责创建Connection(数据库连接)对象,是程序连接数据库的“入口”。

  • 提供驱动的基本信息(如版本、是否接受某个URL)。

详细接口说明请参考JDBC官方网站 (opens new window)。

# 方法

YashanDB JDBC驱动对Driver接口有如下方法:

方法 返回类型
connect(String url, java.util.Properties info) Connection
acceptsURL(String url) boolean
getPropertyInfo(String url,java.util.Properties info) DriverPropertyInfo[]
getMajorVersion() int
getMinorVersion() int
jdbcCompliant() boolean

# 示例

package quickstart;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.DriverPropertyInfo;
import java.sql.SQLException;
import java.util.Properties;

public class CustomDriverManager {

    public static void main(String[] args) throws Exception {
        Class.forName("com.yashandb.jdbc.Driver");
        try (Connection conn = getConnection(
                "jdbc:yasdb://192.168.1.2:1688/yasdb",
                "username",
                "passwd")) {
            // 连接使用完毕后自动关闭
        }
    }

    public static Connection getConnection(String url, String user, String password)
            throws SQLException {
        // 1. 查找合适的驱动
        Driver suitableDriver = findSuitableDriver(url);
        if (suitableDriver == null) {
            throw new SQLException("No suitable driver found for URL: " + url);
        }

        // 2. 检查驱动版本
        int majorVersion = suitableDriver.getMajorVersion();
        int minorVersion = suitableDriver.getMinorVersion();
        System.out.println("Using driver version: " + majorVersion + "." + minorVersion);

        // 3. 检查 JDBC 合规性
        if (!suitableDriver.jdbcCompliant()) {
            System.out.println("Warning: Driver is not fully JDBC compliant");
        }

        // 4. 获取连接属性要求
        Properties baseProps = new Properties();
        baseProps.setProperty("user", user);
        baseProps.setProperty("password", password);

        DriverPropertyInfo[] requiredProps = suitableDriver.getPropertyInfo(url, baseProps);
        for (DriverPropertyInfo prop : requiredProps) {
            if (prop.required && prop.value == null) {
                System.out.println("Missing required property: " + prop.name);
            }
        }

        // 5. 建立连接
        Properties connectionProps = new Properties();
        connectionProps.setProperty("user", user);
        connectionProps.setProperty("password", password);

        return suitableDriver.connect(url, connectionProps);
    }

    private static Driver findSuitableDriver(String url) throws SQLException {
        // 遍历已注册的驱动以找到匹配的驱动
        java.util.Enumeration<Driver> drivers = DriverManager.getDrivers();
        while (drivers.hasMoreElements()) {
            Driver driver = drivers.nextElement();
            if (driver.acceptsURL(url)) {
                return driver;
            }
        }
        return null;
    }
}

正常情况下,程序输出如下:

Using driver version: 1.10
Warning: Driver is not fully JDBC compliant
pdf-btn 下载文档 copy-btn 复制链接
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流