为什么要使用数据库连接池?
有哪些数据库连接池?
怎么使用德鲁伊?
(第三方jar)
不过现在流行maven,不建议使用古老方式。
(properties文件)
xx.properties文件是用于收集数据库信息如:驱动地址、数据库 连接地址、数据库账号、数据库密码等等一些配置信息。
!注意 xx.properties文件是在src目录下。
driver = com.mysql.jdbc.Driver
url = jdbc:mysql:///db_music
acc = root
pass = root
DruidDataSource
DruidDataSource 是阿里写出来的一个数据源, 它不仅可以获取数据库连接,还把这些数据库连接管理了起来,也就是所谓的数据库连接池。这样的话,当通过该数据源获取数据库连接的时候,如果数据库连接池里有可以使用的连接,那么就直接返回该连接,就省的每次获取数据库连接都要创建了。
ResourceBundle
这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念,两者都是一起出现的。可以说,国际化的目的就是为了实现本地化。比如对于“取消”,中文中我们使用“取消”来表示,而英文中我们使用“cancel”。若我们的程序是面向国际的(这也是软件发展的一个趋势),那么使用的人群必然是多语言环境的,实现国际化就非常有必要。而ResourceBundle可以帮助我们轻松完成这个任务:当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包(大多数情况下也就是.properties文件)中加载它。这样可以编写很大程度上独立于用户语言环境的程序代码,它将资源包中大部分(即便不是全部)特定于语言环境的信息隔离开来。说白了ResourceBundle.getBundle()就是获取文件数据的高级读取器。
utils Package
/**
* @author 王永辉
* @version v1.1.0
* @description
* @date 2022-06−06-06−28
**/
public class JDBCUtils {
private static Connection conn;
private static String driverName;
private static String dbUrl;
private static String acc;
private static String pass;
//德鲁伊
private static DruidDataSource dds = new DruidDataSource();
/*
*@Author 玄烨
* @Method 此方法用于静态代码块
* @Date 8:30
*/
static {
//德鲁伊
//读取数据库配置资源
ResourceBundle bundle = ResourceBundle.getBundle("db_music");
String driverName = bundle.getString("driver");
String dbUrl = bundle.getString("url");
String acc = bundle.getString("acc");
String pass = bundle.getString("pass");
//设置Connection连接信息
dds.setDriverClassName(driverName);
dds.setUrl(dbUrl);
dds.setUsername(acc);
dds.setPassword(pass);
}
/*
*@Author 玄烨
* @Method 此方法用于获取连接
* @Date 8:30
*/
public static Connection getConn() {
try {
//连接
conn = dds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/*
*@Author 玄烨
* @Method 此方法用于关闭资源
* @Date 11:43
*/
public static void closeAll(ResultSet rs,PreparedStatement ps,Connection conn) {
try {
if(rs!=null) {
rs.close();
}
if(ps!=null) {
ps.close();
}
if(conn!=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
效果: