C3P0的介绍与使用

阅读: 评论:0

C3P0的介绍与使用

C3P0的介绍与使用



官方参考文档:/

c3p0xml文件配置文档:


c3p0是一个易于使用的库,通过使用jdbc3规范定义的功能和jdbc2的可选扩展来增强传统JDBC驱动程序的“企业级”。从版本0.9.5开始,c3p0完全支持jdbc4规范。


特别是,c3p0提供了几种有用的服务:

一个类将传统的基于DriverManager的JDBC驱动程序适配到较新的javax.sql.DataSource方案以获取数据库连接。
DataSources背后的Connection和PreparedStatements透明池,可以“围绕”传统驱动程序或任意unpooled数据源。
图书馆努力获得正确的细节:

c3p0 DataSources既是可引用的也是可序列化的,因此适用于绑定到各种基于JNDI的命名服务。
当检入池中的连接和语句时,语句和结果集会被仔细清理,以防止当客户端使用懒惰但通用的资源管理策略清理其连接时资源耗尽。 (不要调皮。)
该库采用由JDBC 2和3规范定义的方法(即使这些方法与库作者的偏好相冲突)。 DataSources以JavaBean风格编写,提供所有必需的和大部分可选属性(以及一些非标准属性)以及无参数构造函数。所有JDBC定义的内部接口都已实现(ConnectionPoolDataSource,PooledConnection,ConnectionEvent生成连接等)。您可以将c3p0类与兼容的第三方实现混合使用(尽管并非所有c3p0功能都可以与ConnectionPoolDataSource的外部实现一起使用)。
c3p0希望能够提供更适合大批量“J2EE企业应用程序”使用的DataSource实现。请提供反馈,错误修复等!
<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post"><link rel="stylesheet" href=".css"><div class="htmledit_views" deep="5"><p>【引用请注明出处<a href="" target="_blank">;/a>】</p>
<p>基本的用法在<a href="" target="_blank">;/a>,以及<a href="" target="_blank">;/a>中。</p>
<p>一个示例的配置文件如下:</p>
<p>【引用请注明出处<a href="" target="_blank">;/a>】<br data-filtered="filtered"></p>
<p></p>
<div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 224px; top: 768px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_1" src=".swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="" flashvars="id=1&width=16&height=16" wmode="transparent"></div><div style="position: absolute; left: 224px; top: 768px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_3" src=".swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_3" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="" flashvars="id=3&width=16&height=16" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span class="tag"><?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"UTF-8"</span><span class="tag">?></span><span>  </span></span></li><li class=""><span>  </span></li><li class="alt"><span><span class="tag"><</span><span class="tag-name">c3p0-config</span><span class="tag">></span><span>  </span></span></li><li class=""><span>    <span class="tag"><</span><span class="tag-name">default-config</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"automaticTestTable"</span><span class="tag">></span><span>t_c3p0_test</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"checkoutTimeout"</span><span class="tag">></span><span>10000</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"idleConnectionTestPeriod"</span><span class="tag">></span><span>10</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"initialPoolSize"</span><span class="tag">></span><span>5</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxIdleTime"</span><span class="tag">></span><span>600</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxPoolSize"</span><span class="tag">></span><span>20</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"minPoolSize"</span><span class="tag">></span><span>2</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxStatements"</span><span class="tag">></span><span>60</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxStatementsPerConnection"</span><span class="tag">></span><span>3</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>  </span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">user-overrides</span><span> </span><span class="attribute">user</span><span>=</span><span class="attribute-value">"test-user"</span><span class="tag">></span><span>  </span></span></li><li class=""><span>            <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxPoolSize"</span><span class="tag">></span><span>10</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>            <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"minPoolSize"</span><span class="tag">></span><span>1</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>            <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxStatements"</span><span class="tag">></span><span>0</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"></</span><span class="tag-name">user-overrides</span><span class="tag">></span><span>  </span></span></li><li class=""><span>  </span></li><li class="alt"><span>    <span class="tag"></</span><span class="tag-name">default-config</span><span class="tag">></span><span>  </span></span></li><li class=""><span>  </span></li><li class="alt"><span>    <span class="tag"><</span><span class="tag-name">named-config</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"metkb"</span><span class="tag">></span><span>  </span></span></li><li class=""><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"acquireIncrement"</span><span class="tag">></span><span>20</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"initialPoolSize"</span><span class="tag">></span><span>10</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"minPoolSize"</span><span class="tag">></span><span>10</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxPoolSize"</span><span class="tag">></span><span>100</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>  </span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxStatements"</span><span class="tag">></span><span>0</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>        <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxStatementsPerConnection"</span><span class="tag">></span><span>10</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>  </span></li><li class=""><span>        <span class="comments"><!-- he's important, but there's only one of him --></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"><</span><span class="tag-name">user-overrides</span><span> </span><span class="attribute">user</span><span>=</span><span class="attribute-value">"master-of-the-universe"</span><span class="tag">></span><span>  </span></span></li><li class=""><span>            <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"acquireIncrement"</span><span class="tag">></span><span>1</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>            <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"initialPoolSize"</span><span class="tag">></span><span>1</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>            <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"minPoolSize"</span><span class="tag">></span><span>1</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>            <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxPoolSize"</span><span class="tag">></span><span>5</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class=""><span>            <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"maxStatementsPerConnection"</span><span class="tag">></span><span>50</span><span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>        <span class="tag"></</span><span class="tag-name">user-overrides</span><span class="tag">></span><span>  </span></span></li><li class=""><span>    <span class="tag"></</span><span class="tag-name">named-config</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span><span class="tag"></</span><span class="tag-name">c3p0-config</span><span class="tag">></span><span>  </span></span></li></ol></div><pre class="html" name="code" style="display: none;"><?xml version="1.0" encoding="UTF-8"?><c3p0-config><default-config><property name="automaticTestTable">t_c3p0_test</property><property name="checkoutTimeout">10000</property><property name="idleConnectionTestPeriod">10</property><property name="initialPoolSize">5</property><property name="maxIdleTime">600</property><property name="maxPoolSize">20</property><property name="minPoolSize">2</property><property name="maxStatements">60</property><property name="maxStatementsPerConnection">3</property><user-overrides user="test-user"><property name="maxPoolSize">10</property><property name="minPoolSize">1</property><property name="maxStatements">0</property></user-overrides></default-config><named-config name="metkb"><property name="acquireIncrement">20</property><property name="initialPoolSize">10</property><property name="minPoolSize">10</property><property name="maxPoolSize">100</property><property name="maxStatements">0</property><property name="maxStatementsPerConnection">10</property><!-- he's important, but there's only one of him --><user-overrides user="master-of-the-universe"><property name="acquireIncrement">1</property><property name="initialPoolSize">1</property><property name="minPoolSize">1</property><property name="maxPoolSize">5</property><property name="maxStatementsPerConnection">50</property></user-overrides></named-config>
</c3p0-config></pre>放在eclipse Web工程的src目录下即可(eclipse会将该目录下的配置文件复制到tomcat的webapps/XXX/WEB-INF/classes下)
<p></p>
<p>一个C3P0的单例的示例代码如下(连接池的单例并不妨碍并发,因为从连接池中取连接并不费时,而且取出的连接是线程安全的):</p>
<p>【引用请注明出处<a href="" target="_blank">;/a>】<br data-filtered="filtered"></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 224px; top: 1705px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_2" src=".swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="" flashvars="id=2&width=16&height=16" wmode="transparent"></div><div style="position: absolute; left: 224px; top: 1705px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_4" src=".swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_4" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="" flashvars="id=4&width=16&height=16" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> cn.kb.util;  </span></span></li><li class=""><span>  </span></li><li class="alt"><span><span class="keyword">import</span><span> java.beans.PropertyVetoException;  </span></span></li><li class=""><span><span class="keyword">import</span><span> java.sql.Connection;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> java.sql.ResultSet;  </span></span></li><li class=""><span><span class="keyword">import</span><span> java.sql.SQLException;  </span></span></li><li class="alt"><span><span class="keyword">import</span><span> java.sql.Statement;  </span></span></li><li class=""><span>  </span></li><li class="alt"><span><span class="keyword">import</span><span> hange.v2.c3p0.ComboPooledDataSource;  </span></span></li><li class=""><span>  </span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> PooledDBA </span><span class="keyword">implements</span><span> DBA  </span></span></li><li class=""><span>{  </span></li><li class="alt"><span>    <span class="keyword">private</span><span> ComboPooledDataSource cpds = </span><span class="keyword">null</span><span>;  </span></span></li><li class=""><span>    <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> Log dblog = </span><span class="keyword">null</span><span>;  </span></span></li><li class="alt"><span>    <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> String DBClassName = </span><span class="keyword">null</span><span>;  </span></span></li><li class=""><span>    <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> String DBName = </span><span class="keyword">null</span><span>;  </span></span></li><li class="alt"><span>    <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> String DBUrl = </span><span class="keyword">null</span><span>;  </span></span></li><li class=""><span>    <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> String DBUser = </span><span class="keyword">null</span><span>;  </span></span></li><li class="alt"><span>    <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> String DBPassword = </span><span class="keyword">null</span><span>;  </span></span></li><li class=""><span>  </span></li><li class="alt"><span>    <span class="keyword">protected</span><span> PooledDBA()  </span></span></li><li class=""><span>    {  </span></li><li class="alt"><span>        cpds = <span class="keyword">new</span><span> ComboPooledDataSource(</span><span class="string">"metkb"</span><span>);  </span></span></li><li class=""><span>        <span class="keyword">try</span><span>  </span></span></li><li class="alt"><span>        {  </span></li><li class=""><span>            cpds.setDriverClass( DBClassName );  </span></li><li class="alt"><span>        }  </span></li><li class=""><span>        <span class="keyword">catch</span><span> (PropertyVetoException e)  </span></span></li><li class="alt"><span>        {  </span></li><li class=""><span>            ption(e);  </span></li><li class="alt"><span>        }             </span></li><li class=""><span>        cpds.setJdbcUrl( DBUrl + DBName);  </span></li><li class="alt"><span>        cpds.setUser(DBUser);                                    </span></li><li class=""><span>        cpds.setPassword(DBPassword);  </span></li><li class="alt"><span>    }  </span></li><li class=""><span>  </span></li><li class="alt"><span>    <span class="keyword">static</span><span>  </span></span></li><li class=""><span>    {  </span></li><li class="alt"><span>        <span class="keyword">try</span><span>  </span></span></li><li class=""><span>        {  </span></li><li class="alt"><span>            DBClassName = Instance().get(<span class="string">"db.classname"</span><span>);  </span></span></li><li class=""><span>            DBName = Instance().get(<span class="string">"db.name"</span><span>);  </span></span></li><li class="alt"><span>            DBUrl = Instance().get(<span class="string">"db.url"</span><span>);  </span></span></li><li class=""><span>            DBUser = Instance().get(<span class="string">"db.user"</span><span>);  </span></span></li><li class="alt"><span>            DBPassword = Instance().get(<span class="string">"db.password"</span><span>);  </span></span></li><li class=""><span>            dblog = Instance().getLog(<span class="string">"db"</span><span>);  </span></span></li><li class="alt"><span>        }  </span></li><li class=""><span>        <span class="keyword">catch</span><span> (Exception e)  </span></span></li><li class="alt"><span>        {  </span></li><li class=""><span>            e.printStackTrace();  </span></li><li class="alt"><span>        }  </span></li><li class=""><span>    }  </span></li><li class="alt"><span>  </span></li><li class=""><span>    <span class="annotation">@Override</span><span>  </span></span></li><li class="alt"><span>    <span class="keyword">public</span><span> </span><span class="keyword">synchronized</span><span> Connection getConnection() </span><span class="keyword">throws</span><span> SQLException, ClassNotFoundException, InterruptedException  </span></span></li><li class=""><span>    {  </span></li><li class="alt"><span>        <span class="keyword">return</span><span> Connection();  </span></span></li><li class=""><span>    }  </span></li><li class="alt"><span>  </span></li><li class=""><span>    <span class="annotation">@Override</span><span>  </span></span></li><li class="alt"><span>    <span class="keyword">public</span><span> </span><span class="keyword">synchronized</span><span> </span><span class="keyword">void</span><span> close(Connection conn)  </span></span></li><li class=""><span>    {  </span></li><li class="alt"><span>        <span class="keyword">try</span><span>  </span></span></li><li class=""><span>        {  </span></li><li class="alt"><span>            <span class="keyword">if</span><span> (conn != </span><span class="keyword">null</span><span>)  </span></span></li><li class=""><span>            {  </span></li><li class="alt"><span>                conn.close();  </span></li><li class=""><span>                conn = <span class="keyword">null</span><span>;  </span></span></li><li class="alt"><span>            }  </span></li><li class=""><span>        }  </span></li><li class="alt"><span>        <span class="keyword">catch</span><span> (SQLException e)  </span></span></li><li class=""><span>        {  </span></li><li class="alt"><span>            ption(e);  </span></li><li class=""><span>        }  </span></li><li class="alt"><span>    }  </span></li><li class=""><span>      </span></li><li class="alt"><span>    <span class="annotation">@Override</span><span>  </span></span></li><li class=""><span>    <span class="keyword">public</span><span> </span><span class="keyword">synchronized</span><span> </span><span class="keyword">void</span><span> close(Statement stat)  </span></span></li><li class="alt"><span>    {  </span></li><li class=""><span>        <span class="keyword">try</span><span>  </span></span></li><li class="alt"><span>        {  </span></li><li class=""><span>            <span class="keyword">if</span><span> (stat != </span><span class="keyword">null</span><span>)  </span></span></li><li class="alt"><span>            {  </span></li><li class=""><span>                stat.close();  </span></li><li class="alt"><span>                stat = <span class="keyword">null</span><span>;  </span></span></li><li class=""><span>            }  </span></li><li class="alt"><span>        }  </span></li><li class=""><span>        <span class="keyword">catch</span><span> (SQLException e)  </span></span></li><li class="alt"><span>        {  </span></li><li class=""><span>            ption(e);  </span></li><li class="alt"><span>        }  </span></li><li class=""><span>    }  </span></li><li class="alt"><span>      </span></li><li class=""><span>    <span class="annotation">@Override</span><span>  </span></span></li><li class="alt"><span>    <span class="keyword">public</span><span> </span><span class="keyword">synchronized</span><span> </span><span class="keyword">void</span><span> close(ResultSet rest)  </span></span></li><li class=""><span>    {  </span></li><li class="alt"><span>        <span class="keyword">try</span><span>  </span></span></li><li class=""><span>        {  </span></li><li class="alt"><span>            <span class="keyword">if</span><span> (rest != </span><span class="keyword">null</span><span>)  </span></span></li><li class=""><span>            {  </span></li><li class="alt"><span>                rest.close();  </span></li><li class=""><span>                rest = <span class="keyword">null</span><span>;  </span></span></li><li class="alt"><span>            }  </span></li><li class=""><span>        }  </span></li><li class="alt"><span>        <span class="keyword">catch</span><span> (SQLException e)  </span></span></li><li class=""><span>        {  </span></li><li class="alt"><span>            ption(e);  </span></li><li class=""><span>        }  </span></li><li class="alt"><span>    }  </span></li><li class=""><span>}  </span></li></ol></div><pre class="java" name="code" style="display: none;">package cn.kb.util;import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;hange.v2.c3p0.ComboPooledDataSource;public class PooledDBA implements DBA
{private ComboPooledDataSource cpds = null;private static Log dblog = null;private static String DBClassName = null;private static String DBName = null;private static String DBUrl = null;private static String DBUser = null;private static String DBPassword = null;protected PooledDBA(){cpds = new ComboPooledDataSource("metkb");try{cpds.setDriverClass( DBClassName );}catch (PropertyVetoException e){ption(e);}           cpds.setJdbcUrl( DBUrl + DBName);cpds.setUser(DBUser);                                  cpds.setPassword(DBPassword);}static{try{DBClassName = Instance().get("db.classname");DBName = Instance().get("db.name");DBUrl = Instance().get("db.url");DBUser = Instance().get("db.user");DBPassword = Instance().get("db.password");dblog = Instance().getLog("db");}catch (Exception e){e.printStackTrace();}}@Overridepublic synchronized Connection getConnection() throws SQLException, ClassNotFoundException, InterruptedException{Connection();}@Overridepublic synchronized void close(Connection conn){try{if (conn != null){conn.close();conn = null;}}catch (SQLException e){ption(e);}}@Overridepublic synchronized void close(Statement stat){try{if (stat != null){stat.close();stat = null;}}catch (SQLException e){ption(e);}}@Overridepublic synchronized void close(ResultSet rest){try{if (rest != null){rest.close();rest = null;}}catch (SQLException e){ption(e);}}
}
</pre><br data-filtered="filtered"><br data-filtered="filtered">
【引用请注明出处<a href="" target="_blank">;/a>】<br data-filtered="filtered"><p></p></div></div>

本文发布于:2024-01-27 22:46:29,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063667913104.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23