import org.junit.Test;
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;
/**
* 获取数据库连接
*/
public class ConnectionTest {
/**
* 方式1
*/
@Test
public void testConnection1() throws SQLException {
//1.获取Driver类实现对象
Driver driver = new com.mysql.cj.jdbc.Driver();
String url = "jdbc:mysql://localhost:3306/test";
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "root");
//2.创建连接
Connection conn = driver.connect(url, info);
System.out.println(conn);
}
/**
* 方式2,对方式1的迭代,在如下的程序中不出现第三方api,使得程序具有更好的可移植性
*/
@Test
public void testConnection2() throws Exception {
//1.获取Driver类实现对象: 通过反射
Class c = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) c.newInstance();
String url = "jdbc:mysql://localhost:3306/test";
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "root");
Connection conn = driver.connect(url, info);
System.out.println(conn);
}
/**
* 方式3 使用DriverManager替换Driver
*/
@Test
public void testConnection3() throws Exception {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
//1.获取driver实现类的对象
Class c = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) c.newInstance();
//2.注册驱动
DriverManager.registerDriver(driver);
//3.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
/**
* 方式4
*/
@Test
public void testConnection4() throws Exception {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
//其实这里也可以不写,默认是mysql
Class.forName("com.mysql.cj.jdbc.Driver");
//因为在mysql的驱动类中帮我们声明了如下操作
/* 静态代码块随类加载而执行
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
*/
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
/**
* 方式5
*/
@Test
public void testConnection5() throws IOException, ClassNotFoundException, SQLException {
//加载配置文件
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String name = pros.getProperty("name", "root");
String password = pros.getProperty("password", "root");
String url = pros.getProperty("url", "jdbc:mysql://localhost:3306/test");
String driverClass = pros.getProperty("driverClass", "com.mysql.cj.jdbc.Driver");
//加载驱动
Class.forName(driverClass);
Connection conn = DriverManager.getConnection(url, name, password);
System.out.println(conn);
}
}
JDBC获取数据库连接的5种方式
于 2022-03-04 08:14:38 首次发布