DBUtils学习(一)

程序小测试:

package tan.com;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;

public class DBUtilsTest {
	/**
	 * 测试QueryRunner类的update方法
	 * @throws Exception 
	 */
	@Test
	public void testQueryRunnerUpdate() throws Exception {
		//1.创建QueryRunner的实现类
		QueryRunner queryRunner=new QueryRunner();
		
		//2.使用update方法删除id为2和3的用户
		String sql = "DELETE FROM user " +"WHERE id IN (?,?)";
		Connection connection=null;
		try {
			connection=JDBCTools.getConnection();//获取数据库连接
			queryRunner.update(connection, sql, 2,3);//
			System.out.println("删除操作成功!");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			JDBCTools.release(null, null, connection);
			
		}
		
		
	}

}

工具类

package tan.com;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JDBCTools {
	//数据库连接池应该只被初始化一次(多个项目共享一个连接池就够了)
		private static DataSource dataSource=null;
		static{
			dataSource=new ComboPooledDataSource("helloc3p0");
		}
	//获取数据库连接的方法
		public static Connection getConnection() throws Exception{
			return dataSource.getConnection();
		}
		
		
    /**
     * 2、关闭资源
     * 关闭资源关闭 Statement 和 Connection和ResultSet
     * @param rs
     * @param statement
     * @param conn
     */
	public static void release(ResultSet rs, Statement statement, Connection conn) {
		if(rs != null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		
		if (statement != null) {
			try {
				statement.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
	}
	
	/**
	 * 关闭 Statement 和 Connection
	 * @param statement
	 * @param conn
	 */
	public static void release(Statement statement, Connection conn) {
		if (statement != null) {
			try {
				statement.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
	}

	

}

还是采用c3p0数据库连接池c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>

	<named-config name="helloc3p0">
		
		<!-- 指定连接数据源的基本属性 -->
		<property name="user">root</property>
		<property name="password">1234</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql:///tan</property>
		
		<!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 -->
		<property name="acquireIncrement">5</property>
		<!-- 初始化数据库连接池时连接的数量 -->
		<property name="initialPoolSize">5</property>
		<!-- 数据库连接池中的最小的数据库连接数 -->
		<property name="minPoolSize">5</property>
		<!-- 数据库连接池中的最大的数据库连接数 -->
		<property name="maxPoolSize">10</property>

		<!-- C3P0 数据库连接池可以维护的 Statement 的个数 -->
		<property name="maxStatements">20</property>
		<!-- 每个连接同时可以使用的 Statement 对象的个数 -->
		<property name="maxStatementsPerConnection">5</property>
	
	</named-config>
		
</c3p0-config>
输出结果为:

DBUtils学习(一)_第1张图片

你可能感兴趣的:(DBUtils学习(一))