JDBC学习--驱动加载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MyBabyChao/article/details/82353709

加载驱动

连接数据库时需要加载驱动来完成连接,下面我们来看下加载驱动的过程做了什么事情。

查看com.mysql.jdbc.Driver这个类的源代码,有这么一段静态初始化代码:

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

可见在加载驱动的时候,做了两件事:
1. 新建一个Driver的驱动对象
2. 把驱动对象注册到DriverManager中去。


加载驱动的代码实现

//1.生成一个Driver的驱动对象
com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
new com.mysql.jdbc.Driver();
Class.forName(“com.mysql.jdbc.Driver”).newInstance();

//2.加载类,并且执行类初始化
Class.forName("com.mysql.jdbc.Driver");

由加载驱动的过程可知,使用方式1的代码来加载驱动时,会生成两个Driver对象,所有一般都会使用方式2来加载驱动。

抛弃Class.forName

在JDBC 4.0之后实际上我们不需要再调用Class.forName来加载驱动程序了,我们只需要把驱动的jar包放到工程的类加载路径里,那么驱动就会被自动加载。(先知道,等以后涉及到再来研究)

更多参考:

JDBC驱动加载机制

关于Class.forName(“com.mysql.jdbc.Driver”)

Java中SPI机制深入及源码解析

那么现在访问数据库流程如下:

package com.mbc.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//简单连接数据库Demo
public class TestJDBC {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        String url = "jdbc:mysql://localhost:3306/test?user=root&password=root";

        Connection connection = DriverManager.getConnection(url);
        String sql = "SELECT * FROM user";
        PreparedStatement prepareStatement = connection.prepareStatement(sql);
        ResultSet executeQuery = prepareStatement.executeQuery();
        while(executeQuery.next()) {
            int id = executeQuery.getInt("id");
            String name = executeQuery.getString("name");
            System.out.println("id:" + id + " name:" + name);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/MyBabyChao/article/details/82353709
今日推荐