关于使用数据库连接池的操作:
1.先导入第三方驱动
2.看第三方文档看看调用哪个API
package ConnectionPool;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3p0Test {
@Test
public void testGetConnectionVersion1() throws PropertyVetoException, SQLException {
//获取c3p0数据库连接池
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/test" );
cpds.setUser("mysqlChen");
cpds.setPassword("1234");
//设置初始时数据库连接池中的连接数
cpds.setInitialPoolSize(10);
Connection conn = cpds.getConnection();
System.out.println(conn);
//销毁C3p0数据库连接池
// DataSources.destroy(cpds);
}
@Test
//方式二:使用配置文件
public void testGetConnectionVersion2() throws SQLException {
//helloc3p0---> 来自xml文件中的<named-config name="helloc3p0">
ComboPooledDataSource cpds = new ComboPooledDataSource("helloc3p0");
Connection connection = cpds.getConnection();
System.out.println(connection);
}
}
用JDBC的数据库连接池获取链接:
前提:要注意不能把造池的代码写在获取链接的方法中,否则你每次调用获取链接的方法都会造一个数据库连接池
package JDbcutil1;
import java.io.IOException;
//链接和关闭资源,写熟再用
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JDBCconn1 {
//放在外面而不放在里面 防止每次调用时都创建一个链接;
//保证数据库连接"池"只需要提供一个即可
private static ComboPooledDataSource c3p0 = new ComboPooledDataSource("helloc3p0");
public static Connection getConn() throws Exception{
/**
* 使用c3p0数据库连接池获取链接
*
*/
Connection conn = c3p0.getConnection();
return conn;
}
public static void closeResource(Connection c,Statement ps,ResultSet rs) {
try {
if(ps!=null) {
ps.close();
}if(c!=null) {
c.close();
}
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
}