之前文章出现过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 可以与连接池一起使用。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(); } }}