1. 

(1)seuatdb.properties 配置文件如下:

spring 连接SSL mysql spring 连接池配置_连接池

(2)spring 配置文件beans-properties.xml 中配置数据源的写法:
<context:property-placeholder location="classpath:seuatdb.properties"/>
<!-- c3p0连接池配置 -->
     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
          <!-- 用户名-->
	 <property name="user" value="${user}"></property>
	  <!-- 用户密码-->
	 <property name="password" value="${password}"></property>
	 <property name="driverClass" value="${driverClass}"></property>
	 <property name="jdbcUrl" value="${jdbcUrl}"></property>      
		  
          <!--连接池中保留的最大连接数。默认值: 15 --> 
          <property name="maxPoolSize" value="20"/>
          <!-- 连接池中保留的最小连接数,默认为:3-->
          <property name="minPoolSize" value="2"/>
          <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->
          <property name="initialPoolSize" value="2"/>

          <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 --> 
          <property name="maxIdleTime">60</property>
          
          <!-- 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 --> 
          <property name="checkoutTimeout" value="3000"/>
          
          <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 --> 
          <property name="acquireIncrement" value="2"/>

         <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次--> 
          <property name="acquireRetryAttempts" value="0"/>

          <!--重新尝试的时间间隔,默认为:1000毫秒--> 
          <property name="acquireRetryDelay" value="1000" />

          <!--关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务 --> 
          <property name="autoCommitOnClose">false</property>

          <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null --> 
          <property name="automaticTestTable">Test</property>

          <!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false--> 
          <property name="breakAfterAcquireFailure">false</property>

          <!--每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 --> 
          <property name="idleConnectionTestPeriod">60</property>
          <!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0--> 
          <property name="maxStatements">100</property>
          <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 --> 
          <property name="maxStatementsPerConnection"></property>
     </bean>


(3)java 文件中写法

ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-properties.xml");
		DataSource dataSource = (DataSource) ctx.getBean("seUatdataSource");
		Connection conn = dataSource.getConnection();//dataSource 数据源是只有一个,但是getConnection() 得到的Connection 是一个连接池中的,有若干个,由上面的配置项去配置
		Statement stmt = dataSource.getConnection().createStatement();
		ResultSet rs = stmt.executeQuery("SELECT TOP 10 productid,BiddingRecommend,datachange_lasttime FROM   [ArchhDB].[dbo].[po_new]  with(NOLOCK) WHERE <span style="font-family: Arial, Helvetica, sans-serif;">BiddingRecommend </span><span style="font-family: Arial, Helvetica, sans-serif;">!= ''  order by datachange_lasttime desc");</span>
		boolean resultFlag = false; 
		while (rs.next()){
			resultFlag=true;
			System.out.println(rs.getString(1) +"  "+ rs.getString(2) +"  "+ rs.getString(3));
		}
		if(resultFlag==false)  
		    _logger.info("当前select 没有结果");