暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Java如何调用Halo数据库(三)-DriverManager

原创 Halo Tech 2024-04-03
165
DriverManager是做什么的?
DriverManager 管理JDBC驱动程序的基础服务。DriverManger 可以注册、删除、加载的驱动程序,可以根据给定的url获取符合url协议的驱动Driver 并建立Conenction连接。

1、注册程序

在使用 JDBC 连接数据库之前,必须先注册适用于您的数据库的驱动程序。DriverManager 负责加载和注册这些驱动程序。
注册驱动源码
public static void register() throws SQLException {
  if (isRegistered()) {
    throw new IllegalStateException(
        "Driver is already registered. It can only be registered once.");
  }
  Driver registeredDriver = new Driver();
  DriverManager.registerDriver(registeredDriver);
  Driver.registeredDriver = registeredDriver;
}


取消驱动注册源码

 public static void deregister() throws SQLException {
    if (registeredDriver == null) {
      throw new IllegalStateException(
          "Driver is not registered (or it has not been registered using Driver.register() method)");
    }
    DriverManager.deregisterDriver(registeredDriver);
    registeredDriver = null;
  }


加载驱动源码

private synchronized Properties getDefaultProperties() throws IOException {
    if (defaultProperties != null) {
      return defaultProperties;
    }

    // Make sure we load properties with the maximum possible privileges.
    try {
      defaultProperties =
          AccessController.doPrivileged(new PrivilegedExceptionAction<Properties>() {
            public Properties run() throws IOException {
              return loadDefaultProperties();
            }
          });
    } catch (PrivilegedActionException e) {
      throw (IOException) e.getException();
    }

    return defaultProperties;


2、创建连接

DriverManager 允许创建到数据库的连接,这是执行 SQL 操作的第一步。

public class JdbcDriverManagerTest {
    private static final String URL = "jdbc:halo://localhost:1921/test";
    private static final String USER = "root";
    private static final String PASSWORD = "123456";
    public void testJdbcRaw() throws Exception {
        Class.forName("com.halo.Driver");
        Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
        Statement stmt = conn.createStatement();
        // PreparedStatement ptmt = conn.prepareStatement(sql); 
        ResultSet rs = stmt.executeQuery("SELECT username, age FROM user");
        while(rs.next()){
            System.out.println(“”);
        }
        conn.close();
    }}


3、管理连接池

连接池是一组预先创建的数据库连接,可以在需要时被重复使用,以提高性能。DriverManager 可以与连接池一起使用。
以下是一个使用 HikariCP 连接池的示例:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;

import java.sql.SQLException;
public class JDBCDemo {
    public static void main(String[] args) {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:halo://localhost:1921/test");
        config.setUsername("root");
        config.setPassword("password");
        // 创建 Hikari 数据源
        HikariDataSource dataSource = new HikariDataSource(config);
        try {
            // 从连接池获取连接
            Connection connection = dataSource.getConnection();
            // 在此处执行数据库操作
            // 关闭连接
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论