package com.tedu.jdbc;
import com.mysql.cj.jdbc.Driver;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
/**
* 通过JDBC从数据库获取连接的方式
* JDBC获取连接是通过driver来获取的
* 连接数据库:url,username,password
*/
public class DataConnection {
/**
* 方式一:直接通过Driver获取
*/
@Test
public void test1() throws Exception {
// 通过Driver来获取,首先要获取Driver对象
Driver driver = new Driver();
// Driver的connect方法要求我们传String url,Properties pro
String url = "jdbc:mysql://localhost:3306/student_db?serverTimezone=GMT%2B8";
// 创建Properties对象--封装username和password
Properties properties = new Properties();
// k的值必须是user和password,否则会报错
properties.setProperty("user", "root");
properties.setProperty("password", "root");
// 开始连接
Connection connect = driver.connect(url, properties);
System.out.println(connect);
}
/**
* 方式二:通过反射获取Driver
*/
@Test
public void test2() throws Exception {
// 通过Driver的全类名获取字节码对象
Class<?> cla = Class.forName("com.mysql.cj.jdbc.Driver");
// 反射获取实例对象
Driver driver =(Driver) cla.newInstance();
// Driver的connect方法要求我们传String url,Properties pro
String url = "jdbc:mysql://localhost:3306/student_db?serverTimezone=GMT%2B8";
// 创建Properties对象--封装username和password
Properties properties = new Properties();
// k的值必须是user和password,否则会报错
properties.setProperty("user", "root");
properties.setProperty("password", "root");
// 开始连接
Connection connect = driver.connect(url, properties);
System.out.println(connect);
}
/**
* 方式三:通过DriverManager来获取连接
*/
@Test
public void test3() throws Exception {
// 通过Driver的全类名获取字节码对象
Class<?> cla = Class.forName("com.mysql.cj.jdbc.Driver");
// 反射获取实例对象
Driver driver =(Driver) cla.newInstance();
// 注册驱动
DriverManager.registerDriver(driver);
String url = "jdbc:mysql://localhost:3306/student_db?serverTimezone=GMT%2B8";
// 获取连接
Connection connection = DriverManager.getConnection(url, "root", "root");
System.out.println(connection);
}
/**
* 方式四:Driver类中有一个静态代码块,在静态代码块中通过DriverManager注册了驱动
* 所以我们只需要加载这个Driver类就可以执行这个静态代码块注册驱动了
*
*/
@Test
public void test4() throws Exception {
// 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/student_db?serverTimezone=GMT%2B8";
// 获取连接
Connection connection = DriverManager.getConnection(url, "root", "root");
System.out.println(connection);
}
/**
* 方式五:优化方式四,将配置提取到配置文件
*/
@Test
public void test5() throws Exception {
// 通过类加载器来加载配置文件
InputStream resourceAsStream = DataConnection.class.getClassLoader().getResourceAsStream("Jdbc.properties");
// 创建Properties对象来加载流
Properties properties = new Properties();
properties.load(resourceAsStream);
// 获取配置文件的数据
String url = properties.getProperty("url");
String username = properties.getProperty("username");
String password = properties.getProperty("password");
String driverClass = properties.getProperty("driverClass");
// 加载驱动
Class.forName(driverClass);
// 获取连接
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println(connection);
}
}
通过JDBC从数据库获取Connection
最新推荐文章于 2023-08-04 23:55:49 发布