<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/C3P0-Connection-jdbc-pool/</link>
<title><![CDATA[C3P0，开源java连接池，JDBC连接池，数据库连接池，DataSources]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[编程杂谈]]></category>
<pubDate>Thu, 09 Sep 2010 16:50:02 +0000</pubDate> 
<guid>https://www.heckjj.com/C3P0-Connection-jdbc-pool/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 微软雅黑;">C3P0是一个开放源代码的JDBC连接池，它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。 <br/><a href="https://www.heckjj.com/plugin/album/pictures/2a09fd5295c23e6d9a2a79e5adfc5463.gif" target="_blank"><img src="https://www.heckjj.com/plugin/album/pictures/2a09fd5295c23e6d9a2a79e5adfc5463.gif" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>C3P0配置：<br/>首先肯定是要下载个包的<br/>c3p0-0.9.1-pre11.bin.zip<br/>解压后把bin下的c3p0-0.9.1-pre11.jar包拷贝到项目下的lib里<br/>接下来新建个连接文件：</span><br/><a href="https://www.heckjj.com/plugin/album/pictures/0d18193350fcaeeae80ff39d6ba4d076.gif" target="_blank"><img src="https://www.heckjj.com/plugin/album/pictures/0d18193350fcaeeae80ff39d6ba4d076.gif" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><textarea name="code" class="java" rows="15" cols="100">package dbc;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class ConnectionFactory &#123;

&nbsp;&nbsp;&nbsp;&nbsp;private ConnectionFactory()&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;private static ComboPooledDataSource ds = null;

&nbsp;&nbsp;&nbsp;&nbsp;static &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Logger log = Logger.getLogger("com.mchange"); // 日志
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// log.setLevel(Level.WARNING);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds = new ComboPooledDataSource();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 设置JDBC的Driver类
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.setDriverClass("oracle.jdbc.driver.OracleDriver");&nbsp;&nbsp;// 参数由 Config 类根据配置文件读取
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 设置JDBC的URL
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.setJdbcUrl("jdbc:oracle:thin:@192.168.1.134:1521:heck");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 设置数据库的登录用户名
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.setUser("scott");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 设置数据库的登录用户密码
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.setPassword("tiger");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 设置连接池的最大连接数
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.setMaxPoolSize(200);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 设置连接池的最小连接数
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.setMinPoolSize(20);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; catch (PropertyVetoException e) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;public static synchronized Connection getConnection() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection con = null;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con = ds.getConnection();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; catch (SQLException e1) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e1.printStackTrace();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return con;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;// C3P0 end
&#125;</textarea><br/>再建个文件用来测试<br/><textarea name="code" class="java" rows="15" cols="100">package dbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class dbctest &#123;
&nbsp;&nbsp;public static void main(String[] args) &#123;
&nbsp;&nbsp;boolean flag = false;
&nbsp;&nbsp;// 在此处成具体的数据库验证

&nbsp;&nbsp;// 声明一个数据库操作对象
&nbsp;&nbsp;PreparedStatement pstmt = null;
&nbsp;&nbsp;// 声明一个结果集对象
&nbsp;&nbsp;ResultSet rs = null;
&nbsp;&nbsp;// 声明一个SQL变量，用于保存SQL语句
&nbsp;&nbsp;String sql = null;
&nbsp;&nbsp;// DataBaseConnection为具体的数据库连接及关闭操作类
&nbsp;&nbsp;Connection con = null;
&nbsp;&nbsp;// 连接数据库
&nbsp;&nbsp;con = ConnectionFactory.getConnection();

&nbsp;&nbsp;// 编写SQL语句
&nbsp;&nbsp;sql = "SELECT u_name,u_password FROM nwvideo.n_user WHERE u_name=? and u_password=?";
&nbsp;&nbsp;try &#123;
&nbsp;&nbsp; // 实例化数据库操作对象
&nbsp;&nbsp; pstmt = con.prepareStatement(sql);

&nbsp;&nbsp; System.out.println("操作对象已被实例化");

&nbsp;&nbsp; // 设置pstmt的内容，是按ID和密码验证
&nbsp;&nbsp; pstmt.setString(1, "heck");
&nbsp;&nbsp; pstmt.setString(2, "heck");

&nbsp;&nbsp; System.out.println("获得username,password");

&nbsp;&nbsp; // 查询记录
&nbsp;&nbsp; rs = pstmt.executeQuery();
&nbsp;&nbsp; System.out.println("执行查询完毕");
&nbsp;&nbsp; // 判断是否有记录
&nbsp;&nbsp; if (rs.next()) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;// 如果有记录，则执行此段代码
&nbsp;&nbsp;&nbsp;&nbsp;// 用户是合法的，可以登陆
&nbsp;&nbsp;&nbsp;&nbsp;flag = true;

&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("用户合法");
&nbsp;&nbsp; &#125;
&nbsp;&nbsp; // 依次关闭

&nbsp;&nbsp; rs.close();
&nbsp;&nbsp; pstmt.close();

&nbsp;&nbsp;&#125; catch (Exception e) &#123;
&nbsp;&nbsp; System.out.println(e);
&nbsp;&nbsp;&#125; finally &#123;
&nbsp;&nbsp; // 最后一定要保证数据库已被关闭
&nbsp;&nbsp; try &#123;
&nbsp;&nbsp;&nbsp;&nbsp;con.close();
&nbsp;&nbsp; &#125; catch (SQLException e) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block
&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();
&nbsp;&nbsp; &#125;
&nbsp;&nbsp;&#125;
 &#125;
&#125;</textarea><span style="font-family: 微软雅黑;"><br/>这样就这个C3P0,开源java连接池就配置成功了<br/>使用代码里的主要代码就是这句 <br/>con = ConnectionFactory.getConnection(); <br/>用完记得关闭连接。 </span><br/>Tags - <a href="https://www.heckjj.com/tags/c3p0/" rel="tag">c3p0</a> , <a href="https://www.heckjj.com/tags/%25E5%25BC%2580%25E6%25BA%2590/" rel="tag">开源</a> , <a href="https://www.heckjj.com/tags/%25E8%25BF%259E%25E6%258E%25A5%25E6%25B1%25A0/" rel="tag">连接池</a>
]]>
</description>
</item><item>
<link>https://www.heckjj.com/C3P0-Connection-jdbc-pool/#blogcomment</link>
<title><![CDATA[[评论] C3P0，开源java连接池，JDBC连接池，数据库连接池，DataSources]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/C3P0-Connection-jdbc-pool/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>