版权声明:本文为博主原创文章,未经博主允许不得转载。 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包放到工程的类加载路径里,那么驱动就会被自动加载。(先知道,等以后涉及到再来研究)
更多参考:
关于Class.forName(“com.mysql.jdbc.Driver”)
那么现在访问数据库流程如下:
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);
}
}
}