版权属于:
Hello World
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
用java.sql.DriverManager下的registerDriver( ) 方法注册驱动。传入一个Driver()对象即可。
// 1. 注册驱动
Driver driver = new Driver();
DriverManager.registerDriver(driver);
//合写成一句
DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
第二种是较为常用的,因为比较简单。
原理:
先看一下Driver()方法的源码。在第五行有一个静态方法,静态方法里执行了注册驱动的语句。
所以第二种方法的原理是:反射这个类com.mysql.jdbcDriver,使这个类的静态代码块执行,驱动就注册成功了
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
}
public class Query {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取数据库连接
String url = "jdbc:mysql://127.0.0.1:3306/userdb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong&allowPublicKeyRetrieval=true";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
//获取数据库操作对象
stmt = conn.createStatement();
//执行sql语句
String sql = "select * from userinfo";
rs = stmt.executeQuery(sql);
//处理结果集
while (rs.next()){
String value = rs.getString("userId")+", "+rs.getString("userName");
System.out.println(value);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
//关闭连接
if (rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
}
评论 (0)