为什么要使用数据库连接池
如果一个网站的访问量比较大,数据库服务器就需要为每一次的链接创建一次数据库链接,而链接是非常消耗时间的,并且非常容易造成服务起内存出现溢出,宕机等状况。数据库连接池正式针对这个问题提出来的.数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。
- 实验用代码如下
package com.atswu.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.dbcp.BasicDataSource;
import com.mysql.jdbc.Statement;
public class ljcjdbc {
public static BasicDataSource ds = null;
public static String DRIVER_NAME = "com.mysql.jdbc.Driver";
public static String DB_URL = "jdbc:mysql://localhost:3306/mysql";
public static final String USER_NAME = "root";
public static String PASSWORD = "";
public static void dbpoolInit(){
ds = new BasicDataSource();
ds.setUrl(DB_URL);
ds.setDriverClassName(DRIVER_NAME);
ds.setUsername(USER_NAME);
ds.setPassword(PASSWORD);
}
public static void dbpoolTest() throws SQLException{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = ds.getConnection();
stmt = (Statement) conn.createStatement();
rs = stmt.executeQuery("select * from user");
while(rs.next()){
System.out.println(rs.getString("User"));
}
} catch (SQLException e) {
e.printStackTrace();
// TODO: handle exception
}finally{
if(conn!=null){
conn.close();
}
if(stmt!=null){
stmt.close();
}
if(rs!=null){
rs.close();
}
}
}
public static void main(String[] args) throws SQLException {
dbpoolInit();
dbpoolTest();
}
}
- 实验细节说明:
1.使用DBCP需要依赖使用dbcp的jar包,下载:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
2.实现DBCP的步骤:初始化DBCP连接池,通过BasicDataSource方法进行创建,调用的时候方法和jdbc方法一致
3.建立一个数据库连接池pool, 池中有若干个Connection 对象, 当用户发来请求需要进行数据库交互时则会使用池中第一个Connection对象.
4.当本次连接结束时, 再将这个Connection对象归还池中, 这样就可以保证池中一直有足够的Connection对象.
DBCP使用步骤
第一步:
第二步:
第三步:
使用DBCP数据库连接池遇到的问题:
- dbcp的jar包要个jdk版本吻合,不然在编译运行过程中会抛出异常。dbcp的版本要根据jdk版本确定。