02. JDBC基础 — 使用DriverManager优化jdbc连接不同数据库的需求

JDBC基础

  —— 使用DriverManager优化jdbc连接不同数据库的需求

优化上一个程序,不直接使用Driver,而使用SQL给我们提供的DriverManager类

DriverManager是数据库驱动的管理类

好处:

  1. 可以通过DriverManager中重载的getConnection()方法直接获取数据库连接,比较方便
  2. 可以同时管理多个不同的驱动程序,即同时管理不同类型的数据库的驱动,需要哪个时自动判断使用

好处1体现:

  比上一个笔记的需要new 一个Properties的实例存放user、password来得方便

@Test
public void testDriverManager() throws Exception {
    // 1.准备连接数据库的4个基本信息:驱动的全类名、URL、登陆用户名、密码
    String driverClass = null;
    String jdbcUrl = null;
    String user = null;
    String password = null;

    // 读取类路径下的jdbc.properties文件
    InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc/jdbc.properties");
    Properties properties = new Properties();
    properties.load(in);
    driverClass = properties.getProperty("driverClass");
    jdbcUrl = properties.getProperty("jdbcUrl");
    user = properties.getProperty("username");
    password = properties.getProperty("password");

    // 2.加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块)
    // DriverManager.registerDriver((Driver) Class.forName(driverClass).newInstance()); // 这一行等效于下面那一行
    Class.forName(driverClass);
    // 3.通过DriverManager的getConnection() 方法带入参数:url、user、password获取连接Connection
    Connection connection = DriverManager.getConnection(jdbcUrl, user, password);
    // 打印连接以便验证
    System.out.println(connection);
}
    
输出:com.mysql.jdbc.JDBC4Connection@5c0369c4    

好处2体现:

  同时准备了MySQL和Oracle两个数据库,我们只需要选择使用MySQL连接还是Oracle连接,就可以连接不同的数据库,也就是说,我们只需要给DriverManager的getConnection()方法相应数据库的连接信息,那么DriverManager就会选择连接对应的数据库,而不需要去改动源代码。

@Test
public void testMoreDriverManager() throws Exception {
    // 1.MySQL的数据库连接信息
    String driverClass = "com.mysql.jdbc.Driver";
    String jdbcUrl = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull";
    String user = "mysqlroot";
    String password = "mysqladmin123";
    // Oracle的数据库连接信息
    String driverClass2 = "oracle.jdbc.driver.OracleDriver";
    String jdbcUrl2 = "jdbc:oracle:thin:@localhost:1521:orcl";
    String user2 = "oracleroot";
    String password2 = "oracleadmin123";

    // 2.加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块)
    Class.forName(driverClass);
    Class.forName(driverClass2);

    // 3.通过DriverManager的getConnection() 方法带入参数:url、user、password获取连接Connection
    // 代码1:MySQL连接
    Connection connection = DriverManager.getConnection(jdbcUrl, user, password);
    // 代码2:Oracle连接
    // Connection connection = DriverManager.getConnection(jdbcUrl2, user2, password2);
    // 打印连接以便验证
    System.out.println(connection);
}

选择代码1生效时,输出:com.mysql.jdbc.JDBC4Connection@3d8c7aca
选择代码2生效时,输出:oracle.jdbc.driver.T4CConnection@3f0ee7cb
其实也就是调用同一个方法,输入的参数是哪个数据库的,那么程序就会自动去连接相应的数据库

本章结束

回到目录


如果本文有错误或对本文有不理解的地方欢迎评论 _

如果本文有帮助到您,可以点一下右上角的赞哦,谢谢啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要使用com.github.housepower.jdbc连接ClickHouse,您需要按照以下步骤操作: 1. 首先,将ClickHouse JDBC驱动程序添加到您的项目中。您可以从Maven中央仓库或GitHub上获得最新版本的驱动程序。将以下依赖项添加到您的项目的pom.xml文件中: ```xml <dependency> <groupId>com.github.housepower</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.3.0</version> </dependency> ``` 2. 在您的Java代码中,导入必要的类: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; ``` 3. 创建一个连接到ClickHouse数据库的方法: ```java public Connection createConnection(String host, int port, String database, String username, String password) throws SQLException { String url = "jdbc:clickhouse://" + host + ":" + port + "/" + database; return DriverManager.getConnection(url, username, password); } ``` 4. 使用以下代码执行查询并获取结果: ```java try (Connection connection = createConnection("localhost", 8123, "default", "username", "password"); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM your_table")) { while (resultSet.next()) { // 处理结果集数据 } } catch (SQLException e) { // 处理异常 } ``` 请确保将上述代码中的`host`、`port`、`database`、`username`和`password`替换为您的ClickHouse连接详细信息。同时,根据您的需求修改查询语句和结果处理逻辑。 希望这可以帮助您成功连接并与ClickHouse进行交互!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值