﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-少年阿宾-随笔分类-JDBCP</title><link>http://www.blogjava.net/stevenjohn/category/52542.html</link><description>那些青春的岁月</description><language>zh-cn</language><lastBuildDate>Mon, 03 Sep 2012 18:28:02 GMT</lastBuildDate><pubDate>Mon, 03 Sep 2012 18:28:02 GMT</pubDate><ttl>60</ttl><item><title>Java 创建数据库连接池(二)</title><link>http://www.blogjava.net/stevenjohn/archive/2012/09/04/386916.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Mon, 03 Sep 2012 16:20:00 GMT</pubDate><guid>http://www.blogjava.net/stevenjohn/archive/2012/09/04/386916.html</guid><wfw:comment>http://www.blogjava.net/stevenjohn/comments/386916.html</wfw:comment><comments>http://www.blogjava.net/stevenjohn/archive/2012/09/04/386916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stevenjohn/comments/commentRss/386916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stevenjohn/services/trackbacks/386916.html</trackback:ping><description><![CDATA[<p>package com.abin.lee.collection.pool;</p>
<p>import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.SQLException;<br />import java.util.ArrayList;<br />import java.util.List;</p>
<p>public class ConnectionPool {<br />&nbsp;private List&lt;Connection&gt; pool;<br />&nbsp;private static final String Url = "jdbc:oracle:thin:@localhost:1521:XE";<br />&nbsp;private static final String USERNAME = "abing";<br />&nbsp;private static final String PASSWORD = "abing";<br />&nbsp;private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";<br />&nbsp;private int poolSize = 10;<br />&nbsp;private static volatile ConnectionPool instance = null;</p>
<p>&nbsp;private ConnectionPool() {<br />&nbsp;&nbsp;init();<br />&nbsp;}</p>
<p>&nbsp;public void init() {<br />&nbsp;&nbsp;pool = new ArrayList&lt;Connection&gt;(poolSize);<br />&nbsp;&nbsp;addConnection();<br />&nbsp;}</p>
<p>&nbsp;public synchronized void release(Connection conn) {<br />&nbsp;&nbsp;pool.add(conn);<br />&nbsp;}</p>
<p>&nbsp;public synchronized void closePool() {<br />&nbsp;&nbsp;for (int i = 0; i &lt; pool.size(); i++) {<br />&nbsp;&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;&nbsp;((Connection) pool.get(i)).close();<br />&nbsp;&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;pool.remove(i);<br />&nbsp;&nbsp;}<br />&nbsp;}</p>
<p>&nbsp;public static ConnectionPool getInstance() {<br />&nbsp;&nbsp;if (null == instance) {<br />&nbsp;&nbsp;&nbsp;synchronized (ConnectionPool.class) {<br />&nbsp;&nbsp;&nbsp;&nbsp;if (null == instance) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new ConnectionPool();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return instance;<br />&nbsp;}</p>
<p>&nbsp;public synchronized Connection getConnection() {<br />&nbsp;&nbsp;if (pool.size() &gt; 0) {<br />&nbsp;&nbsp;&nbsp;Connection conn = pool.get(0);<br />&nbsp;&nbsp;&nbsp;if(conn!=null){<br />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Connection Pool Create Success");<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;pool.remove(conn);<br />&nbsp;&nbsp;&nbsp;return conn;<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;return null;<br />&nbsp;&nbsp;}<br />&nbsp;}</p>
<p>&nbsp;public void addConnection() {<br />&nbsp;&nbsp;Connection conn = null;<br />&nbsp;&nbsp;for (int i = 0; i &lt; poolSize; i++) {<br />&nbsp;&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(DRIVER);<br />&nbsp;&nbsp;&nbsp;&nbsp;conn = DriverManager.getConnection(Url, USERNAME, PASSWORD);<br />&nbsp;&nbsp;&nbsp;&nbsp;pool.add(conn);<br />&nbsp;&nbsp;&nbsp;} catch (Exception e) {<br />&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;}<br />&nbsp;}</p>
<p>}<br /></p><br /><br /><br /><br /><br /><br />测试代码：<br />
<p>package com.abin.lee.collection.pool;</p>
<p>import java.sql.Connection;<br />import java.sql.PreparedStatement;<br />import java.sql.ResultSet;<br />import java.util.ArrayList;<br />import java.util.List;</p>
<p>import com.abin.lee.collection.threadlocal.UserBean;</p>
<p>public class TestConnectionPool {</p>
<p>&nbsp;public static List&lt;UserBean&gt; findAll(){<br />&nbsp;&nbsp;Connection conn=null;<br />&nbsp;&nbsp;PreparedStatement ps=null;<br />&nbsp;&nbsp;ResultSet rs=null;<br />&nbsp;&nbsp;String sql="select * from userbean order by id desc";<br />&nbsp;&nbsp;List&lt;UserBean&gt; list=new ArrayList&lt;UserBean&gt;();<br />&nbsp;&nbsp;UserBean user=null;<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;conn=ConnectionPool.getInstance().getConnection();<br />&nbsp;&nbsp;&nbsp;ps=conn.prepareStatement(sql);<br />&nbsp;&nbsp;&nbsp;rs=ps.executeQuery();<br />&nbsp;&nbsp;&nbsp;while (rs.next()&amp;&amp;rs!=null) {<br />&nbsp;&nbsp;&nbsp;&nbsp;user=new UserBean();<br />&nbsp;&nbsp;&nbsp;&nbsp;user.setId(rs.getString("id"));<br />&nbsp;&nbsp;&nbsp;&nbsp;user.setUsername(rs.getString("username"));<br />&nbsp;&nbsp;&nbsp;&nbsp;user.setPassword(rs.getString("password"));<br />&nbsp;&nbsp;&nbsp;&nbsp;list.add(user);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;} catch (Exception e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return list;<br />&nbsp;}<br />&nbsp;public static void main(String[] args) {<br />&nbsp;&nbsp;List&lt;UserBean&gt; list=findAll();<br />&nbsp;&nbsp;for(UserBean lst:list){<br />&nbsp;&nbsp;&nbsp;System.out.println("id="+lst.getId());<br />&nbsp;&nbsp;&nbsp;System.out.println("username="+lst.getUsername());<br />&nbsp;&nbsp;&nbsp;System.out.println("id="+lst.getPassword());<br />&nbsp;&nbsp;}<br />&nbsp;}</p>
<p><br />}<br /></p><img src ="http://www.blogjava.net/stevenjohn/aggbug/386916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stevenjohn/" target="_blank">abin</a> 2012-09-04 00:20 <a href="http://www.blogjava.net/stevenjohn/archive/2012/09/04/386916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 创建数据库连接池(一)</title><link>http://www.blogjava.net/stevenjohn/archive/2012/09/04/386915.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Mon, 03 Sep 2012 16:18:00 GMT</pubDate><guid>http://www.blogjava.net/stevenjohn/archive/2012/09/04/386915.html</guid><wfw:comment>http://www.blogjava.net/stevenjohn/comments/386915.html</wfw:comment><comments>http://www.blogjava.net/stevenjohn/archive/2012/09/04/386915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stevenjohn/comments/commentRss/386915.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stevenjohn/services/trackbacks/386915.html</trackback:ping><description><![CDATA[<p>package com.abin.lee.collection.pool;</p>
<p>import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.SQLException;<br />import java.util.LinkedList;<br />import java.util.List;</p>
<p>public class ConnectionManage {<br />&nbsp;private static List&lt;Connection&gt; pool=new LinkedList&lt;Connection&gt;();;<br />&nbsp;private static final String Url = "jdbc:oracle:thin:@localhost:1521:XE";<br />&nbsp;private static final String USERNAME = "abing";<br />&nbsp;private static final String PASSWORD = "abing";<br />&nbsp;private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";<br />&nbsp;private static int initCount = 5;<br />&nbsp;private static int maxCount = 10;<br />&nbsp;private static int currentCount = 5;<br />&nbsp;private static volatile ConnectionManage instance = null;<br />&nbsp;private ConnectionManage(){<br />&nbsp;&nbsp;init();<br />&nbsp;}<br />&nbsp;public static ConnectionManage getInstance(){<br />&nbsp;&nbsp;if(null == instance){<br />&nbsp;&nbsp;&nbsp;synchronized (ConnectionManage.class) {<br />&nbsp;&nbsp;&nbsp;&nbsp;if(null == instance){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new ConnectionManage();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return instance;<br />&nbsp;}<br />&nbsp;public void init(){<br />&nbsp;&nbsp;addConnection();<br />&nbsp;}<br />&nbsp;public static Connection createConnection() throws ClassNotFoundException {<br />&nbsp;&nbsp;Connection conn=null;<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;Class.forName(DRIVER);<br />&nbsp;&nbsp;&nbsp;conn=DriverManager.getConnection(Url, USERNAME, PASSWORD);<br />&nbsp;&nbsp;} catch (SQLException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return conn;<br />&nbsp;}<br />&nbsp;public static void addConnection(){<br />&nbsp;&nbsp;for(int i=0;i&lt;initCount;i++){<br />&nbsp;&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;&nbsp;pool.add(createConnection());<br />&nbsp;&nbsp;&nbsp;} catch (ClassNotFoundException e) {<br />&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;public static void release(Connection conn){<br />&nbsp;&nbsp;pool.add(conn);<br />&nbsp;}<br />&nbsp;public static Connection getConnection() throws SQLException, ClassNotFoundException{<br />&nbsp;&nbsp;synchronized (pool) {<br />&nbsp;&nbsp;&nbsp;if(pool.size()&gt;0){<br />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Current Connection size is:"+pool.size());<br />&nbsp;&nbsp;&nbsp;&nbsp;return pool.get(0);<br />&nbsp;&nbsp;&nbsp;}else if(currentCount&lt;maxCount){<br />&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(DRIVER);<br />&nbsp;&nbsp;&nbsp;&nbsp;Connection conn=createConnection();<br />&nbsp;&nbsp;&nbsp;&nbsp;pool.add(conn);<br />&nbsp;&nbsp;&nbsp;&nbsp;currentCount++;<br />&nbsp;&nbsp;&nbsp;&nbsp;return conn;<br />&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;throw new SQLException("Current Connection is Zero");<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;}</p>
<p>}<br /></p><br /><br /><br /><br />测试代码：<br />
<p>package com.abin.lee.collection.pool;</p>
<p>import java.sql.Connection;<br />import java.sql.PreparedStatement;<br />import java.sql.ResultSet;<br />import java.util.ArrayList;<br />import java.util.List;</p>
<p>import com.abin.lee.collection.threadlocal.UserBean;</p>
<p>public class TestConnectionPool {</p>
<p>&nbsp;public static List&lt;UserBean&gt; findAll(){<br />&nbsp;&nbsp;Connection conn=null;<br />&nbsp;&nbsp;PreparedStatement ps=null;<br />&nbsp;&nbsp;ResultSet rs=null;<br />&nbsp;&nbsp;String sql="select * from userbean order by id desc";<br />&nbsp;&nbsp;List&lt;UserBean&gt; list=new ArrayList&lt;UserBean&gt;();<br />&nbsp;&nbsp;UserBean user=null;<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;conn=ConnectionManage.getInstance().getConnection();<br />&nbsp;&nbsp;&nbsp;ps=conn.prepareStatement(sql);<br />&nbsp;&nbsp;&nbsp;rs=ps.executeQuery();<br />&nbsp;&nbsp;&nbsp;while (rs.next()&amp;&amp;rs!=null) {<br />&nbsp;&nbsp;&nbsp;&nbsp;user=new UserBean();<br />&nbsp;&nbsp;&nbsp;&nbsp;user.setId(rs.getString("id"));<br />&nbsp;&nbsp;&nbsp;&nbsp;user.setUsername(rs.getString("username"));<br />&nbsp;&nbsp;&nbsp;&nbsp;user.setPassword(rs.getString("password"));<br />&nbsp;&nbsp;&nbsp;&nbsp;list.add(user);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;} catch (Exception e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return list;<br />&nbsp;}<br />&nbsp;public static void main(String[] args) {<br />&nbsp;&nbsp;List&lt;UserBean&gt; list=findAll();<br />&nbsp;&nbsp;for(UserBean lst:list){<br />&nbsp;&nbsp;&nbsp;System.out.println("id="+lst.getId());<br />&nbsp;&nbsp;&nbsp;System.out.println("username="+lst.getUsername());<br />&nbsp;&nbsp;&nbsp;System.out.println("id="+lst.getPassword());<br />&nbsp;&nbsp;}<br />&nbsp;}</p>
<p><br />}<br /></p><img src ="http://www.blogjava.net/stevenjohn/aggbug/386915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stevenjohn/" target="_blank">abin</a> 2012-09-04 00:18 <a href="http://www.blogjava.net/stevenjohn/archive/2012/09/04/386915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java数据库连接池实现  </title><link>http://www.blogjava.net/stevenjohn/archive/2012/09/03/386910.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Mon, 03 Sep 2012 13:56:00 GMT</pubDate><guid>http://www.blogjava.net/stevenjohn/archive/2012/09/03/386910.html</guid><wfw:comment>http://www.blogjava.net/stevenjohn/comments/386910.html</wfw:comment><comments>http://www.blogjava.net/stevenjohn/archive/2012/09/03/386910.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stevenjohn/comments/commentRss/386910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stevenjohn/services/trackbacks/386910.html</trackback:ping><description><![CDATA[<p class="alt"><span><a href="http://06peng.com/read.php/13.htm">http://06peng.com/read.php/13.htm</a><br /><a href="http://blog.sina.com.cn/s/blog_70ce7e9e0100v9dh.html">http://blog.sina.com.cn/s/blog_70ce7e9e0100v9dh.html</a><br /><a href="http://blog.163.com/lgw1984_12/blog/static/4122245520096239913479/">http://blog.163.com/lgw1984_12/blog/static/4122245520096239913479/</a><br /><a href="http://mzba520.iteye.com/blog/939691">http://mzba520.iteye.com/blog/939691</a><br /><a href="http://blog.csdn.net/java_blue/article/details/6581480">http://blog.csdn.net/java_blue/article/details/6581480</a><br /><a href="http://blog.csdn.net/a600423444/article/details/6542521">http://blog.csdn.net/a600423444/article/details/6542521</a><br /><a href="http://blog.csdn.net/caoyinghui1986/article/details/2315864">http://blog.csdn.net/caoyinghui1986/article/details/2315864</a><br /><br /></span></p><img src ="http://www.blogjava.net/stevenjohn/aggbug/386910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stevenjohn/" target="_blank">abin</a> 2012-09-03 21:56 <a href="http://www.blogjava.net/stevenjohn/archive/2012/09/03/386910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java程序实现线程连接池功能</title><link>http://www.blogjava.net/stevenjohn/archive/2012/09/03/386909.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Mon, 03 Sep 2012 13:55:00 GMT</pubDate><guid>http://www.blogjava.net/stevenjohn/archive/2012/09/03/386909.html</guid><wfw:comment>http://www.blogjava.net/stevenjohn/comments/386909.html</wfw:comment><comments>http://www.blogjava.net/stevenjohn/archive/2012/09/03/386909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stevenjohn/comments/commentRss/386909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stevenjohn/services/trackbacks/386909.html</trackback:ping><description><![CDATA[<span style="widows: 2; text-transform: none; text-indent: 0px; font: 14px/25px Arial, Helvetica, sans-serif, SimSun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"> 
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">下面是以前学java 的时候写的一个实现，没有考虑很多，比如同步处理等等。懒得改，你就看看吧。</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"></p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">package com.wangjia.tools;</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">import java.io.Serializable;<br />import java.sql.*;<br />import java.util.*;</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">/**<br />*<span class="Apple-converted-space">&nbsp;</span><a style="border-bottom: rgb(0,85,153) 1px dotted; color: rgb(0,85,153); text-decoration: none" href="http://wenwen.soso.com/z/Search.e?sp=S%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0&amp;ch=w.search.intlink" target="_blank">数据库连接池</a>的简单实现<br />* @author wangjia<br />* @version 1.0<br />*@serial 2301410997974776106L<br />*/<br />public class DbConn implements Serializable{<br /><br />/**<br />*<span class="Apple-converted-space">&nbsp;</span><br />*/<br />private static final long serialVersionUID = 2301410997974776106L;<br />private static List&lt;Connection&gt; connList=new ArrayList&lt;Connection&gt;();<br />//private static String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//sql2000<br />private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//sql2005<br />private static String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Forum";<br />private static String userName="sa";<br />private static String password="sa";<br />private static int maxConn=20;<br />private static int minConn=5;<br />private static int usedConn=0;<br />private static DbConn dbconn=null;<br />// private static int flag=1;<br />/**<br />* 设<a style="border-bottom: rgb(0,85,153) 1px dotted; color: rgb(0,85,153); text-decoration: none" href="http://wenwen.soso.com/z/Search.e?sp=S%E7%BD%AE%E6%95%B0%E6%8D%AE&amp;ch=w.search.intlink" target="_blank">置数据</a>库连接的驱动<br />* @param driver<span class="Apple-converted-space">&nbsp;</span><a style="border-bottom: rgb(0,85,153) 1px dotted; color: rgb(0,85,153); text-decoration: none" href="http://wenwen.soso.com/z/Search.e?sp=S%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5&amp;ch=w.search.intlink" target="_blank">数据库连接</a>的驱动&lt;br/&gt;例如:"com.microsoft.sqlserver.jdbc.SQLServerDriver"<br />*/<br />public static void setDriver(String driver) {<br />DbConn.driver = driver;<br />}</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">/**<br />* 设置数据库<a style="border-bottom: rgb(0,85,153) 1px dotted; color: rgb(0,85,153); text-decoration: none" href="http://wenwen.soso.com/z/Search.e?sp=S%E8%BF%9E%E6%8E%A5%E6%B1%A0&amp;ch=w.search.intlink" target="_blank">连接池</a>的最<a style="border-bottom: rgb(0,85,153) 1px dotted; color: rgb(0,85,153); text-decoration: none" href="http://wenwen.soso.com/z/Search.e?sp=S%E5%B0%8F%E6%95%B0&amp;ch=w.search.intlink" target="_blank">小数</a>量<br />* @param maxConn 数据库连接池的最小数量<br />*/<br />public static void setMaxConn(int maxConn) {<br />DbConn.maxConn = maxConn;<br />}</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">/**<br />* 设置数据库连接池的最<a style="border-bottom: rgb(0,85,153) 1px dotted; color: rgb(0,85,153); text-decoration: none" href="http://wenwen.soso.com/z/Search.e?sp=S%E5%A4%A7%E6%95%B0&amp;ch=w.search.intlink" target="_blank">大数</a>量<br />* @param minConn 数据库连接池的最大数量<br />*/<br />public static void setMinConn(int minConn) {<br />DbConn.minConn = minConn;<br />}</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">/**<br />* 设置数据库连接的URL<br />* @param url 数据库连接的URL,包括<a style="border-bottom: rgb(0,85,153) 1px dotted; color: rgb(0,85,153); text-decoration: none" href="http://wenwen.soso.com/z/Search.e?sp=S%E6%95%B0%E6%8D%AE%E5%BA%93&amp;ch=w.search.intlink" target="_blank">数据库</a>的名称&lt;br/&gt;例如: "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=master"<br />*/<br />public static void setUrl(String url) {<br />DbConn.url = url;<br />}</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">private DbConn() throws MyException{<br />try{<br />Class.forName(driver);<br />for(int i=0;i&lt;minConn;i++){<br />connList.add(DriverManager.getConnection(url,userName.toString(),password.toString()));<br />}<br />}catch(ClassNotFoundException e){<br />throw new MyException("请设置正确的数据库连接驱动!\nusing: DbConn.setDriver(String driver)");<br /><br />}catch(SQLException e){<br />throw new MyException("请设置正确的数据库连接URL以及用<a style="border-bottom: rgb(0,85,153) 1px dotted; color: rgb(0,85,153); text-decoration: none" href="http://wenwen.soso.com/z/Search.e?sp=S%E4%BA%8E%E8%BF%9E&amp;ch=w.search.intlink" target="_blank">于连</a>接的用户名和密码!\n" +<br />"using: DbConn.setUrl(String url),DbConn.setUserName(String userName),DbConn.setPassword(String password)");<br /><br />}<br />}<br />/**<br />* 用于得到DbConn对象<br />* @return 返回一个DbConn对像<br />*/<br /></p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">public static Connection getConn() throws MyException{<br />// flag++;<br />if(dbconn==null)dbconn=new DbConn();<br />// System.out.println("falg="+flag);<br />// System.out.println("usedConn="+usedConn);<br />if(connList.size()==0){<br />throw new MyException("没有正确的设置相关信息,以至连接池未初始化");<br />}<br />if(usedConn==maxConn){<br /><br />Thread thread=new Thread(new Runnable(){</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">@SuppressWarnings("static-access")<br />public void run() {<br />if(usedConn&lt;maxConn){<br />try {<br />try {<br />Thread.currentThread().sleep(2000);<br />} catch (InterruptedException e) {<br />e.printStackTrace();<br />}<br />getConn();<br />} catch (MyException e) {<br />// TODO Auto-generated catch block<br />e.printStackTrace();<br />}<br />}<br /><br />}<br /><br />});<br />thread.start();<br />}<br />if(usedConn&gt;=minConn&amp;&amp;usedConn&lt;maxConn){<br />try {<br />connList.add(DriverManager.getConnection(url,userName.toString(),password.toString()));<br />} catch (SQLException e) {<br /><br />}<br />return connList.get(usedConn++);<br />}<br />if(usedConn&lt;5){<br />return connList.get(usedConn++);<br />}<br />return null;<br />}<br /><br />public static void close(){<br />try {<br />if(usedConn&gt;5)<br />connList.get(--usedConn).close();<br />else usedConn--;<br />} catch (SQLException e) {<br />// TODO 自动生成 catch 块<br />e.printStackTrace();<br />}<br /><br />}<br /><br />/**<br />* 设置用于连接数据库的密码<br />* @param password 用于连接数据库的密码<br />*/<br />public static void setPassword(String password) {<br />DbConn.password = password;<br />}</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">/**<br />* 设置用于连接数据库的用户名<br />* @param userName 用于连接数据库的用户名<br />*/<br />public static void setUserName(String userName) {<br />DbConn.userName = userName;<br />}</p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">}<br /></p>
<p style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">在项目中用到连接池的话，一般会直接使用已有的开源连接池实现，比如用 apache 的common-dbcp.jar和common-pool.jar 相结合，很少去自己实现。</p></span><img src ="http://www.blogjava.net/stevenjohn/aggbug/386909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stevenjohn/" target="_blank">abin</a> 2012-09-03 21:55 <a href="http://www.blogjava.net/stevenjohn/archive/2012/09/03/386909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>