大家好:RT,想请大家推荐一个数据库连接池例子(最好是视频),自己不会写,网上找了很多,都说不错,但自己很菜,有很多地方看不懂,求大家帮助。另外请问大家几个问题:
1:数据库连接池最小连接数,怎么设置才合理,合理的该是多少,请问大家,有个明确的吗?
   
2:数据库连接池最大连接数,怎么设置才合理,合理的该是多少,请问大家,有个明确的吗?3:数据库连接池自动增加的大小,怎么设置合理(这个也是必须设置的吗)?如果是C3P0最好,谢谢。

解决方案 »

  1.   

    在util包中新建两个文件,一个是DataSourceFactory.java,另一个是databaseresource.properties配置文件,还有几个jar包,commons-dbcp-1.2.1.jar,commons-pool-1.3.jar,msbase.jar,mssqlserver.jar,msutil.jar,这5个jar包自己去网上下载下来
    DataSourceFactory.java的内容如下package util;import org.apache.commons.dbcp.*;
    import java.sql.*;
    import java.util.*;public class DataSourceFactory {
    private static String PROPERTIES_FILE = "/util/databaseresource.properties";
    private static DataSourceFactory instance = null;
    private BasicDataSource ds1;

    private DataSourceFactory() {
    Properties prop = new Properties();
    try {
    prop.load(this.getClass().getResourceAsStream(PROPERTIES_FILE));
    ds1 = (BasicDataSource)BasicDataSourceFactory.createDataSource(prop);
    } catch (Exception e) {
    e.printStackTrace();

    }

    public static DataSourceFactory getInstance() {
    if(instance == null) {
    instance = new DataSourceFactory();
    }
    return instance;
    }

    public Connection getConnection() {
    Connection conn = null;
    try {
    conn = ds1.getConnection();
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    return conn;
    }
    }
    databaseresource.properties中的内容如下:driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
    url=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=friend  //friend为数据库名username=sa     //数据库连接用户名
    password=null   //数据库连接密码
    defaultAutoCommit=true  //是否自动提交事务
    maxActive=10    //连接池最大连接数
    弄好后在程序中用   
    Connection conn = DataSourceFactory.getInstance().getConnection();
    就可以等到数据库连接了
      

  2.   

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass">
    <value>${jdbc.driverClassName}</value>
    </property>
    <property name="jdbcUrl">
    <value>${jdbc.url}</value>
    </property>
    <property name="user">
    <value>${jdbc.username}</value>
    </property>
    <property name="password">
    <value>${jdbc.password}</value>
    </property> <!--连接池中保留的最小连接数。-->
    <property name="minPoolSize">
    <value>5</value>
    </property> <!--连接池中保留的最大连接数。Default: 15 -->
    <property name="maxPoolSize">
    <value>30</value>
    </property> <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
    <property name="initialPoolSize">
    <value>10</value>
    </property> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
    <property name="maxIdleTime">
    <value>60</value>
    </property> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
    <property name="acquireIncrement">
    <value>5</value>
    </property> <!--
    JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
    属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
    如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0
    -->
    <property name="maxStatements">
    <value>0</value>
    </property> <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
    <property name="idleConnectionTestPeriod">
    <value>60</value>
    </property> <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
    <property name="acquireRetryAttempts">
    <value>30</value>
    </property> <!--
    获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
    保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
    获取连接失败后该数据源将申明已断开并永久关闭。Default: false
    -->
    <property name="breakAfterAcquireFailure">
    <value>true</value>
    </property> <!--
    因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
    时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
    等方法来提升连接测试的性能。Default: false
    -->
    <property name="testConnectionOnCheckout">
    <value>false</value>
    </property> <!--
    property name="automaticTestTable"> <value>account</value> </property
    -->
    </bean>
      

  3.   

    liujun822这个XML我有,我想问的是JAVA对数据库连接的代码?
    如果实在不行我可能用SSH了
      

  4.   

    多谢各位,我想问下,JAVA代码我该怎么写。
      

  5.   


    如果用DBCP
     InitialContext ctx = new InitialContext();  
     DataSource ds = (DataSource) ctx.lookup("java:xxxxx"); 
     Connection conn = ds.getConnection();  
      

  6.   

    Context uc= new InitialContext();
    DataSource source = (DataSource)uc.lookup("java/xxx");
    Connection con = source.getConnection();
      

  7.   

    我用tomcat 配置的数据库连接池。
      

  8.   

    liujun822你能把你的JAVA代码拿出来看下吗?
      

  9.   

    我是通过加载属性文件,通过连接池来连接数据库的,只需要一个属性问题即可。没有说明具体的java代码。
      

  10.   

    谢谢啦!采用您的方法,成功连接就;谢谢,【配置文件路径,我的只需要写文件名“databaseresource”就可以了】