Java操作MySQL数据库——使用数据库连接池C3P0查询数据
数据库连接池的概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。步骤:1. 需要的依赖,导入jar包c3p0-0.9.5.2.jarmchange-commons-java-0.2.12.jarmysql-connector-java-5.1.47.jar
·
数据库连接池的概念:
其实就是一个容器(集合),存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
步骤:
1. 需要的依赖,导入jar包
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.12.jar
mysql-connector-java-5.1.47.jar
2.在类路径下建立c3p0-config.xml
它是数据库连接池的配置文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 默认配置,如果没有指定则使用这个配置 -->
<default-config>
<property name="user">root</property>
<property name="password">123456</property>
<property name="jdbcUrl">jdbc:mysql:///blog?useSSL=false</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- 当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。-->
<property name="checkoutTimeout">30000</property>
<!-- 每个几秒检查所有连接池中的空闲连接-->
<property name="idleConnectionTestPeriod">30</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">3</property>
<!-- 接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接如果为0,则永远不会断开连接-->
<property name="maxIdleTime">30</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">100</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">2</property>
<!-- JDBC的标准参数,用以控制数据源内加载d的PreparedStatements数量-->
<property name="maxStatements">200</property>
</default-config>
</c3p0-config>
编写代码
使用数据库连接池,除了获取数据库连接与之前不一样,其他操作没什么区别
public class Main {
public static void main(String[] args) throws SQLException {
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
Connection connection = comboPooledDataSource.getConnection();
String sql = "select * from blog.user";
Statement stmt = connection.createStatement();
ResultSet resultSet = stmt.executeQuery(sql);
List<User> list = new ArrayList<User>();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String username = resultSet.getString("username");
String password = resultSet.getString("password");
list.add(new User(id, username, password));
}
for (User user : list) {
System.out.println(user);
}
stmt.close();
connection.close();
}
}
class User {
private Integer id;
private String username;
private String password;
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)