• [转]DBCP连接池的最简单应用(用于ORACLE数据库)


    http://blog.csdn.net/iihero/article/details/8254107

     http://www.programgo.com/article/81693457907/

    鉴于有人问起DBCP直接用于JDBC连接的问题,我做了一个最简单的示例。所有资源来源于网上。它不需要什么Web容器,就是一简单的控制台应用。

    资源:
    http://apache.etoak.com//commons/pool/binaries/commons-pool-1.5.6-bin.zip
    http://labs.renren.com/apache-mirror//commons/dbcp/binaries/commons-dbcp-1.4-bin.zip
    http://download.java.net/maven/1/javaee/jars/javaee-api-5.jar
    当然,还有oracle jdbc要用的ojdbc14.jar (适用于oracle9i及以上版本)

    工程文件:放到这里了。http://dl.iteye.com/topics/download/210279f0-f752-37a6-969f-d58ba13cc394

    数据库连接信息:
    jdbc:oracle:thin:scott/tiger@sean-m700:1521:ora92
    sean-m700是主机名,ora92是oracle数据库的instance ID. 我手头的机器上没有安装oracle数据库,用的是很早以前的一个oracle9.2的拷贝,重新安装实例和相应服务得来的。 

    源码如下:借化献佛,源码也是从网上得来的。(http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/doc/BasicDataSourceExample.Java?revision=1100136&view=markup)

    [java] view plain copy
     
     print?
    1. /*  
    2. //  
    3. 33  // Here's a simple example of how to use the BasicDataSource.  
    4. 34  //  
    5. 35    
    6. 36  //  
    7. 37  // Note that this example is very similiar to the PoolingDriver  
    8. 38  // example.  
    9. 39    
    10. 40  //  
    11. 41  // To compile this example, you'll want:  
    12. 42  //  * commons-pool-1.5.6.jar  
    13. 43  //  * commons-dbcp-1.3.jar (JDK 1.4-1.5) or commons-dbcp-1.4 (JDK 1.6+)  
    14. 44  //  * j2ee.jar (for the javax.sql classes)  
    15. 45  // in your classpath.  
    16. 46  //  
    17. 47  // To run this example, you'll want:  
    18. 48  //  * commons-pool-1.5.6.jar  
    19. 49  //  * commons-dbcp-1.3.jar (JDK 1.4-1.5) or commons-dbcp-1.4 (JDK 1.6+)  
    20. 50  //  * j2ee.jar (for the javax.sql classes)  
    21. 51  //  * the classes for your (underlying) JDBC driver  
    22. 52  // in your classpath.  
    23. 53  //  
    24. 54  // Invoke the class using two arguments:  
    25. 55  //  * the connect string for your underlying JDBC driver  
    26. 56  //  * the query you'd like to execute  
    27. 57  // You'll also want to ensure your underlying JDBC driver  
    28. 58  // is registered.  You can use the "jdbc.drivers"  
    29. 59  // property to do this.  
    30. 60  //  
    31. 61  // For example:  
    32. 62  //  java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver   
    33. 63  //       -classpath commons-pool-1.5.6.jar:commons-dbcp-1.4.jar:j2ee.jar:oracle-jdbc.jar:.   
    34. 64  //       PoolingDataSourceExample  
    35. 65  //       "jdbc:oracle:thin:scott/tiger@myhost:1521:mysid"  
    36. 66  //       "SELECT * FROM DUAL"  
    37. */    
    38. /*  
    39. The Oracle connection URL for the thin client-side driver ojdbc14.jar has the following format:  
    40. jdbc:oracle:thin:[user/password]@[host][:port]:SID  
    41. jdbc:oracle:thin:[user/password]@//[host][:port]/SID  
    42.   
    43.   user - The login user name defined in the Oracle server.  
    44.   
    45.   password - The password for the login user.  
    46.   
    47.   host - The host name where Oracle server is running.   
    48.          Default is 127.0.0.1 - the IP address of localhost.  
    49.   
    50.   port - The port number where Oracle is listening for connection.  
    51.          Default is 1521.  
    52.   
    53.   SID  - System ID of the Oracle server database instance.   
    54.          SID is a required value. By default, Oracle Database 10g Express   
    55.          Edition creates one database instance called XE.  
    56. */    
    57.     
    58. import org.apache.commons.dbcp.BasicDataSource;    
    59. import javax.sql.*;    
    60. import java.sql.*;    
    61.     
    62. public class TestDataSource    
    63. {    
    64.     
    65.     /**  
    66.      * @param args  
    67.      */    
    68.     public static void main(String[] args)    
    69.     {    
    70.         System.out.println("Setting up data source.");    
    71.         String url = "jdbc:oracle:thin:scott/tiger@sean-m700:1521:ora92";    
    72.         DataSource dataSource = setupDataSource(url);    
    73.         System.out.println("Done...");    
    74.     
    75.         // Now, we can use JDBC DataSource as we normally would.    
    76.         //    
    77.         Connection conn = null;    
    78.         Statement stmt = null;    
    79.         ResultSet rset = null;    
    80.     
    81.         try {    
    82.             System.out.println("Creating connection.");    
    83.             conn = dataSource.getConnection();    
    84.             System.out.println("Creating statement.");    
    85.             stmt = conn.createStatement();    
    86.             System.out.println("Executing statement.");    
    87.             rset = stmt.executeQuery("select 1 from DUAL");    
    88.             System.out.println("Results:");    
    89.             int numcols = rset.getMetaData().getColumnCount();    
    90.             while(rset.next()) {    
    91.                 for(int i=1;i<=numcols;i++) {    
    92.                     System.out.print(" " + rset.getString(i));    
    93.                 }    
    94.                 System.out.println("");    
    95.             }    
    96.         } catch(SQLException e) {    
    97.             e.printStackTrace();    
    98.         } finally {    
    99.             try { if (rset != null) rset.close(); } catch(Exception e) { }    
    100.             try { if (stmt != null) stmt.close(); } catch(Exception e) { }    
    101.             try { if (conn != null) conn.close(); } catch(Exception e) { }    
    102.         }    
    103.     }    
    104.     
    105.     public static DataSource setupDataSource(String connectURI) {    
    106.         BasicDataSource ds = new BasicDataSource();    
    107.         ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");    
    108.         ds.setUsername("scott");    
    109.         ds.setPassword("tiger");    
    110.         ds.setUrl(connectURI);    
    111.         return ds;    
    112.     }    
    113.     
    114.     public static void printDataSourceStats(DataSource ds) {    
    115.         BasicDataSource bds = (BasicDataSource) ds;    
    116.         System.out.println("NumActive: " + bds.getNumActive());    
    117.         System.out.println("NumIdle: " + bds.getNumIdle());    
    118.     }    
    119.     
    120.     public static void shutdownDataSource(DataSource ds) throws SQLException {    
    121.         BasicDataSource bds = (BasicDataSource) ds;    
    122.         bds.close();    
    123.     }    
    124.     
    125. }    


    不过,需要说明的是,DBCP连接池是几个开源连接池里最不适合用于生产环境的,经常会出现死连接现象。 而cp30和proxool都是不错的选择。DBCP用于测评开发环境,还是比较便利的。

  • 相关阅读:
    爬虫(Xpath)——爬tieba.baidu.com
    爬虫(正则)——爬neihan8
    爬虫(cookie)——renren模拟登陆
    爬虫(ProxyHandler)——代理
    爬虫(GET)——handler处理器和自定义opener
    爬虫(AJEX)——豆瓣动态页面
    爬虫(POST)——有道翻译(有bug)
    一次跨域请求出现 OPTIONS 请求的问题及解决方法
    现代JS中的流程控制:详解Callbacks 、Promises 、Async/Await
    nodejs中的子进程,深入解析child_process模块和cluster模块
  • 原文地址:https://www.cnblogs.com/wincai/p/5535589.html
Copyright © 2020-2023  润新知