JDBC核心技术二(获取数据库连接)

JDBC核心技术二(获取数据库连接)

系列笔记目录

  1. JDBC核心技术一(概述)
  2. JDBC核心技术二(获取数据库连接)
  3. JDBC核心技术三(PreparedStatement)
  4. JDBC核心技术四(Blob字段和批量插入)
  5. JDBC核心技术五 (数据库事务)
  6. JDBC核心技术六(数据库连接池)
  7. JDBC核心技术七(CallableStatement)

JDBC学习笔记第二遍,操作数据库首先得获取数据的连接才能进行接下来的操作,记录下如何获取数据的连接,以MySQL 8.0.22为例;

一、 要素一:Driver接口实现类

1.1 Driver接口介绍

  • java.sql.Driver接口:所有JDBC驱动程序需要实现这个接口(例如:MySQL的com.mysql.cj.jdbc.Driver、Oracle的oracle.jdbc.driver.OracleDriver);
  • 在程序中不需要直接去访问实现了Driver接口的类,由驱动程序管理器类(java.sql.DriverManager)来调用这些Driver的实现;

1.2 加载JDBC驱动

1.2.1 MySQL导入JDBC驱动

两种方式导入JDBC驱动

  1. 下载JDBC mysql驱动jar包导入项目;
  2. 使用maven方式关联mysql驱动依赖;
  • 使用maven管理mysql JDBC驱动依赖:
<!-- mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.22</version>
</dependency>
  • 直接导入mysql JDBC驱动jar包到项目
    导入mysql JDBC jar包
1.2.2 加载MySQL JDBC驱动

导入jar包,可通过三种方式加载MySQL JDBC驱动

  • 方式一:直接new驱动实现类对象
Driver driver  = new com.mysql.cj.jdbc.Driver();
  • 方式二:通过反射获取Driver对象
Class clzz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clzz.newInstance();
  • 方式三:通过DriverManager注册Driver
//1. 实例化driver
Class clzz = Class.forName(driverName);
Driver driver = (Driver) clzz.newInstance();
//2. DriverManager注册Driver
DriverManager.registerDriver(driver);

方式三中的DriverManager注册和实例化Driver的步骤可以省略,因为在DriverManager类会进行初始化,并去jar包配置文件中寻找DriverClass的名字

    static {
        try {
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can't register driver!");
        }
    }

去jar包中寻找DriverClassName

寻找DriverClass

二、要素二:URL

URL是连接数据库的地址以及编码方式等一些列信息,mysql的JDBC url如下所示:

jdbcUrl

  • 常见的jdbcUrl:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai

三、要素三:用户名和密码

  • user,password是数据库的用户名和密码,提供验证访问权限;
  • user,password可以用“属性名=属性值”方式告诉数据库
  • 可以调用 DriverManager 类的 getConnection() 方法建立到数据库的连接

通常有两种方式设置用户名、密码和jdbcurl

  • 方式一: 硬编码方式
    public void testConnection1() {
        try {
            //1.数据库连接的4个基本要素:
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "abc123";
            String driverName = "com.mysql.jdbc.Driver";

            //2.加载驱动 (①实例化Driver ②注册驱动)
            Class.forName(driverName);
            
            //Driver driver = (Driver) clazz.newInstance();
            //3.注册驱动
            //DriverManager.registerDriver(driver);
            /*
            可以注释掉上述代码的原因,是因为在mysql的Driver类中声明有:
            static {
                try {
                    DriverManager.registerDriver(new Driver());
                } catch (SQLException var1) {
                    throw new RuntimeException("Can't register driver!");
                }
            }
             */
            //3.获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println(conn);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

  • 方式二:配置文件配置信息(推荐使用)

配置文件jdbc.properties

user=root
password=root
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
driverClass=com.mysql.cj.jdbc.Driver
    public  void testConnection2() throws Exception {
    	//1.加载配置文件
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
        Properties pros = new Properties();
        pros.load(is);
        
        //2.读取配置信息
        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url");
        String driverClass = pros.getProperty("driverClass");

        //3.加载驱动
        Class.forName(driverClass);

        //4.获取连接
        Connection conn = DriverManager.getConnection(url,user,password);
        System.out.println(conn);
    }

使用配置文件的好处:

  1. 实现了代码和数据的分离,修改数据库信息时可直接修改配置文件;
  2. 修改数据库配置文件信息后,不用重新编译即可生效;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值