*常用第五种方式
@Test
public void Test() throws SQLException {
//创建数据库的驱动 mysql下的驱动
Driver driver = new com.mysql.cj.jdbc.Driver();
//url 代表要访问指定的数据库名 访问路径
//jdbc: 主协议 mysql: 子协议
//localhost 本机ip
//3306 端口号
//jdbc_learn 数据库名字 以及编码格式
String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
//获取一个处理配置文件的对象
Properties pro = new Properties();
//传入用户名和密码
pro.setProperty("user","root");
pro.setProperty("password","123456");
//用mysql驱动获取一个连接对象
Connection conn = driver.connect(url,pro);
System.out.println(conn);
}
@Test
public void Test1() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
//利用反射获取驱动的类
Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
//用驱动的类获取一个驱动对象
Driver driver = (Driver) aClass.newInstance();
String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
Properties pro = new Properties();
pro.setProperty("user","root");
pro.setProperty("password","123456");
Connection connect = driver.connect(url,pro);
System.out.println(connect);
}
@Test
public void Test2() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
//利用反射获取驱动的类
Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
//用驱动的类获取一个驱动对象
Driver driver = (Driver) aClass.newInstance();
String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
String user = "root";
String password = "123456";
//注册驱动
DriverManager.registerDriver(driver);
//获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
@Test
public void Test3() throws ClassNotFoundException, SQLException {
String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
String user = "root";
String password = "123456";
//Driver类再加载的时候已经注册了驱动 所以不必再写多余的代码
Class.forName("com.mysql.cj.jdbc.Driver");
//获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接
1.编写配置文件 jdbc.properties 位置在模块的src下
user=root
password=253797
url=jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
DriverClass=com.mysql.cj.jdbc.Driver
2.编写主体代码
@Test
public void Test4() throws ClassNotFoundException, SQLException, IOException {
//创建容器 处理配置文件
Properties pro = new Properties();
//将配置文件放入一个输出流中
FileInputStream fis = new FileInputStream("src//jdbc.properties");
//加载配置文件到容器中
pro.load(fis);
//注册驱动
Class.forName("DriverClass");
//方法调用容器中的属性
Connection conn = DriverManager.getConnection(pro.getProperty("url"),pro.getProperty("user"),pro.getProperty("password"));
System.out.println(conn);
}
@Test
public void Test5() throws IOException, ClassNotFoundException, SQLException {
//通过类的加载器创建一个输出流 获取类路径下的指定文件的输出流
InputStream is = Collection.class.getClassLoader().getResourceAsStream("jdbc.properties");
//创建容器对象 用于处理配置文件
Properties pro = new Properties();
//加载配置文件到容器中
pro.load(is);
//注册驱动
Class.forName(pro.getProperty("DriverClass"));
//将数据存到字符串中
String url = pro.getProperty("url");
String user = pro.getProperty("user");
String password = pro.getProperty("password");
//获取连接
Connection conn = DriverManager.getConnection(url,user,password);
System.out.println(conn);
}
第五种的好处
*1.实现了数据与代码的分离。实现了解耦
*2.如里雪要修改配置文件信息,可以避免程序重新打包。
public class HikariJDBC {
//创建连接池配置文件
static HikariConfig hikariConfig = new HikariConfig();
static {
//对配置文件进行配置 内置很多配置选项
hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://master:3306/school");
hikariConfig.setUsername("root");
hikariConfig.setPassword("123456");
hikariConfig.addDataSourceProperty("useSSL", "false");
}
//每次调用方法就会从连接池中获取一个连接
public static Connection getConnection() throws SQLException {
//获取连接池
HikariDataSource ds = new HikariDataSource(hikariConfig);
return ds.getConnection();
}
//关闭连接
public static void closeSource(Connection conn){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容