最近有用到C3P0连接池。
c3p0 就是一个 数据库连接池 ,利用 sqljdbc4 建立与数据库的连接 , 并且管理这些连接,不用每次访问数据库都 重新发出数据库连接请求,只需要在c3p0的连接池中拿一个过来就 可以了,这样可以大大的提高性能。
代码如何:
<textarea readonly="readonly" name="code" class="java">
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class maintest {
public static void main(String[] args) {
Connection conn = null;
java.sql.Statement st = null;
ResultSet rs = null;
ComboPooledDataSource ds=null;
ds=new ComboPooledDataSource();
// 与mysql数据库建立连接
try {
conn=ds.getConnection();
} catch (SQLException e) {
System.out.println("数据库链接错误");
e.printStackTrace();
}
// 创建Statement
try {
st = conn.createStatement();
// 创建一个JDBC声明
for (int i = 1; i < 7; i++) {
String sql = "INSERT INTO test (name) VALUES('dsads')";
st.executeUpdate(sql);
}
} catch (SQLException e1) {
System.out.println("数据操作错误");
e1.printStackTrace();
}
// 关闭数据库
try {
if (rs != null) {
rs.close();
rs = null;
}
if (st != null) {
st.close();
st = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (Exception e) {
System.out.println("数据库关闭错误");
e.printStackTrace();
}
}
}
</textarea>
这个是我自己写的测试的 其中C3P0的配置文件的 代码我就不贴了网上很多。配置的具体什么意思网上也挺多的大家自己看看。中间又要解释的就是 你要把你的配置文件的名字放到和类在一个目录下,而且名字必须是c3p0.properties,否则你就要自己读出properties文件中配置的信息。
我对C3P0的关闭不是很理解后来在网上看到说是:
使用完后必须 con.close() 掉,使用连接池的话,执行 con.close 并不会关闭与数据库的 TCP 连接,而是将连接还回到池中去,如果不 close 掉的话,这个连接将会一直被占用,直接连接池中的连接耗尽为止。
从连接池获取的连接connection跟JDK中的connection有点不同,前者的close方法并没有关闭与数据库的连接,而是将连接返回到池中,这样就可以复用了。如果不调用close方法的话拿就失去了使用连接池的意义了。
</pre><br /><br />