1. 数据库连接池
1.1 为什么需要建立数据库连接池
- 如果每次都通过DriverManager获取新连接,用完直接抛弃断开会导致资源浪费。
- 频繁的获取和断开连接对服务器的压力太大可能导致服务器崩溃。
1.2 管理数据库连接池
- 建立一个连接池,这个池中可以容纳一定数量的连接对象。可以先替用户先创建好一些连接对象,用户需要的时候直接从池中拿,使用完毕后归还回连接池。
- 可以提高连接的使用率。当池中的现有的连接都用完了,那么连接池可以向服务器申
请新的连接放到池中。 - 直到池中的连接达到“最大连接数”,就不能在申请新的连接了,如果没有拿到连接的用户只能等待。
- 连接池的作用:管理连接
2.Durid连接池的使用
2.1 硬编码方式
不推荐使用
硬编码方式:创建Druid连接池对象后设置相应的参数,这种方式在代码完成后改动不方便,所以不推荐使用
public void testHard() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
druidDataSource.setUrl("jdbc:mysql:///atguigu");
druidDataSource.setUsername("root");
druidDataSource.setPassword("123456");
DruidPooledConnection connection = druidDataSource.getConnection();
见下文的curd
connection.close();
}
String sql = " select * from t_user where account=? and password=?;";
java.sql.PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setObject(1, "num0");
preparedStatement.setObject(2, "0");
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
int id = resultSet.getInt(1);
String account1 = resultSet.getString(2);
String password1 = resultSet.getString(3);
String nickname = resultSet.getString(4);
System.out.println("id:" + id + " account:" + account1 + " password:" + password1 + " nickname :" + nickname);
} else {
System.out.println("用户不存在");
}
2.2 软编码方式
推荐使用
软编码方式:相应的参数在外部的properties文件中设置,在java代码中通过读取外部配置文件即可完成参数的设置
需要修改参数的时候只需要在外部文件修改即可
public void testsoft() throws Exception{
Properties properties = new Properties();
File file = new File("cfg/driudsoft.properties");
FileInputStream fileInputStream = new FileInputStream(file);
properties.load(fileInputStream);
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
Connection connection = dataSource.getConnection();
见上文的curd部分
connection.close();
}
driverClassName=com.mysql.cj.jdbc.Driver
username=root
password=123456
url=jdbc:mysql:/