利用连接池技术进行网页与数据库的交互

学了有一阵子了,今天刚学了数据库的优化--连接池技术,下面详细总结一下,为什么要用到连接池技术,简单说来就是因为网页在做好上线的时候会有大量的用户同时进行访问,而连接池就是在内存中预设好一定数量的连接对象,以备用户在进行数据库操作时使用。数据库的建立、连接和断开统一由连接池来处理,这样极大程度上提高了数据库的操作性能,也提高的系统资源的使用效率。下面先给出代码:(以下代码为模板,可在开发时通用,直接使用)

package com.xupt.dao;

import java.sql.*;

import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;


public class BaseDao {
private Connection conn;
private Statement stmt;
private ResultSet rs;

public void getConnection(){
try {
Context cx=new InitialContext();
DataSource ds=(DataSource)cx.lookup("java:comp/env/jdbc/sunny");
conn=ds.getConnection();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void close(){
try {
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//增删改
public int update(String sql){
getConnection();
try {
stmt=conn.createStatement();
return stmt.executeUpdate(sql);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return -1;
}finally{
close();
}
}
//查询
public ResultSet query(String sql){
getConnection();
try {
stmt=conn.createStatement();
return stmt.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}

}

完成上述操作之后还需要把连接数据库的jar包放在Tomcat目录下的lib目录中(我用的服务器是Tomcat)。上述红色字体为我的数据库名称。绿色的部分是固定写法。此外还需要在Tomcat目录下的conf/context.xml中进行相关的配置,配置如下:

<Resource name="jdbc/sunny"
auth="Container" type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="root" password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/sunny"
/>

maxActive:指定连接池中处于活动状态的数据库连接的最大数目

maxIdle:指定连接池中处于空闲状态的数据库连接的最大数目

maxWait:指定连接池中的连接处于空闲的最长时间,超过这个时间会抛出异常,取值为-1,表示可以无限期等待

需要注意的一点就是在context.xml中写上述代码是不能有中文空格,否则还是会出错。上述两部完成之后就可以开启服务器让多人畅快的浏览网页了!

posted on 2015-11-28 22:08  Sunny_well  阅读(387)  评论(0编辑  收藏  举报

导航