获取数据库连接的五种方式,推荐使用方式五
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
public class ConnectionTest {
//方式一
@Test //单元测试
public void testConnection1() throws SQLException {
//获取driver实现类对象
Driver driver = new com.mysql.jdbc.Driver();
String url = "jdbc:mysql://localhost:3306/test";
//将用户名和密码封装到properties
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "0301");
Connection conn = driver.connect(url, info);
System.out.println(conn);
}
//对方式一的迭代:使用反射
@Test
public void testConnection2() throws Exception {
//1获取driver实现类对象
Class clazz = Class.forName("com.mysql.jdbc.Driver"); //反射的源头 括号里为路劲
Driver driver = (Driver) clazz.newInstance();
//2 提供要连接的数据库
String url = "jdbc:mysql://localhost:3306/test";
//3 提供连接需要的用户和密码
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "0301");
//4 获取连接
Connection conn = driver.connect(url, info);
System.out.println(conn);
}
//方式三:使用DriverManger替换Driver
@Test
public void testConnection3() throws Exception {
//1.获取Driver实现类对象
Class clazz = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
//2. 提供另外三个连接的基本信息
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "0301";
//注册驱动
DriverManager.deregisterDriver(driver);
//获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
//方式四:对方式三的优化 可以四加载驱动,不用在显示注册驱动
@Test
public void testConnection4() throws Exception {
//1. 提供另外三个连接的基本信息
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "0301";
//2.获取Driver实现类对象
Class.forName("com.mysql.jdbc.Driver");
// Driver driver = (Driver) clazz.newInstance();
// //注册驱动
// DriverManager.deregisterDriver(driver);
/*
* 在MySQL的Driver实现类中,有声明的操作
* */
//3.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
//方式五:将数据库连接需要的4个基本信息声明在配置信息中,通过读取配置文件的方式,获取连接
/*
* 好处:实现了数据与代码的分离,实现了解耦;
* 如果需要修改配置文件信息,可以避免程序重新打包
* */
@Test
public void getConnection5() throws Exception {
//1.读取配置文件中的4个基本信息
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String url = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
//2.加载驱动
Class.forName(driverClass);
//3.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
}