【JDBC】获取数据库连接

1.获取数据库连接的要素

要素一:加载并注册驱动
要素二:URL
要素三:用户名和密码

要素一:加载并注册驱动

(1)导入mysql-connector-java的jar包
image

(2)加载驱动
调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名,com.mysql.jdbc.Driver是驱动类名
image

(3)注册驱动
DriverManager类是管理驱动程序的类,通常Driver类中的静态代码块会调用这个注册方法,因此不需要显式调用
image

Driver类中的静态代码块
image

注:新版的mysql驱动类名为com.mysql.cj.jdbc.Driver

要素二:URL

用来标识一个注册过的驱动程序和定位数据库信息,DriverManager类通过这个URL找到正确的驱动程序
image

常见的URL jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8

要素三:用户名和密码

用于连接数据库
调用 DriverManager 类的 getConnection() 方法获取到数据库的连接

2.连接到数据库

方式一:使用Driver接口实现类中的connect()方法

java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库
厂商提供不同的实现。

显式出现了第三方数据库的API import com.mysql.cj.jdbc.Driver;

@Test
public void test1() {
try {
//1.java.sql.Driver接口实现类的对象
Driver driver = null;
driver = new com.mysql.cj.jdbc.Driver();
//2.url
String url = "jdbc:mysql://localhost:3306/test";
//3.用户名和密码
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "123456");
//4.获取连接
Connection connect = driver.connect(url, info);
System.out.println(connect);
} catch (SQLException e) {
e.printStackTrace();
}
}

方式二:通过反射实例化driver

不在代码中体现第三方数据库的API。

@Test
public void test2(){
try {
//反射方式实例化driver
Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver)clazz.newInstance();
String url = "jdbc:mysql://localhost:3306/test";
Properties info = new Properties();
info.setProperty("user","root");
info.setProperty("password","123456");
Connection connect = driver.connect(url, info);
System.out.println(connect);
}catch (Exception e){
e.printStackTrace();
}
}

方式三:使用DriverManager注册驱动获取连接

@Test
public void test3(){
try {
//1.四个要素
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
String driverName = "com.mysql.cj.jdbc.Driver";
//2.实例化Driver
Class clazz = Class.forName(driverName);
Driver driver = (Driver)clazz.newInstance();
//3.注册驱动
DriverManager.registerDriver(driver);
//4.获取连接
Connection connect = DriverManager.getConnection(url, user, password);
System.out.println(connect);
}catch (Exception e){
e.printStackTrace();
}
}

方式四:不用显示注册驱动

@Test
public void test4(){
try {
//1.四个要素
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
String driverName = "com.mysql.cj.jdbc.Driver";
//2.加载和注册驱动(com.mysql.cj.jdbc.Driver类中的静态代码块有实例化注册了)
Class.forName(driverName);
//3.获取连接
Connection connect = DriverManager.getConnection(url, user, password);
System.out.println(connect);
}catch (Exception e){
e.printStackTrace();
}
}

方式五:使用配置文件保存要素

配置文件jdbc.properties写在src目录下

user = root
password = 123456
url = jdbc:mysql://localhost:3306/test
driverClass = com.mysql.cj.jdbc.Driver

使用配置文件的方式,数据和代码分离,修改配置文件不需要重新编译

@Test
public void test5() throws Exception{
//1.加载配置文件
InputStream is = ConnectionTest.class.getClassLoader().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 connect = DriverManager.getConnection(url, user, password);
System.out.println(connect);
}

参考:jdbc如何注册数据库驱动Driver的

posted @   植树chen  阅读(145)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示