java----连接池C3p0使用的补充
C3p0数据库的连接方式是目前市场场最为广泛的类型之一
本篇主要你演示C3p0使用文件配置和不使用文件配置的两种操作方式
#######使用文件配置
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import com.dbutil.zyz.ConnLink; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3p0Demo1 { //首先演示下C3p0不使用配置文件的连接数据库的方式 static ConnLink connlink=new ConnLink(); static Connection conn=null; static PreparedStatement pstmt=null; public static void main(String[] args) throws SQLException { try { //总体步骤配置如下,可以作为模板使用 //1.创建datasource ComboPooledDataSource dataSource=new ComboPooledDataSource(); //2.设置连接数据的信息 dataSource.setJdbcUrl("jdbc:mysql://localhost/test"); dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setUser("root"); dataSource.setPassword("root"); //得到连接对象 conn=dataSource.getConnection(); String sql="insert into blank values(null,?,?)"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, "test"); pstmt.setInt(2,2000); pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally{ connlink.relese(conn, pstmt); } } }
########不使用文件配置
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3p0Demo2 { //下面开始演示使用配置文件的C3p0用法 static ConnLink connlink=new ConnLink(); static Connection conn=null; static PreparedStatement pstmt=null; public static void main(String[] args) throws SQLException { //就new了一个对象。在这种情况下c3p0会直接找到c3p0-config.xml文件 //并且在c3p0-config.xml文件中默认的找到 default-config配置 try { ComboPooledDataSource dataSource=new ComboPooledDataSource(); //2.得到连接对象 conn=dataSource.getConnection(); String sql="insert into blank values(null,?,?)"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, "root"); pstmt.setInt(2,20000); pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally{ connlink.relese(conn, pstmt); } } }
其中配置文件的信息如下(文件名称不可以更改)
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost/test</property> <property name="user">root</property> <property name="password">root</property> <property name="initialPoolSize">5</property> <property name="maxPoolSize">20</property> </default-config> <named-config name="oracle"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///web_07</property> <property name="user">root</property> <property name="password">123</property> </named-config> </c3p0-config>
注意:代码中的释放调用代码如下
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class ConnLink { //数据库的连接部分 public String jdbc_driver="com.mysql.jdbc.Driver"; public String jdbc_conn="jdbc:mysql://localhost:3306/test"; public String user="root"; public String pass="root"; //返回连接函数的部分 public Connection getConn() throws SQLException, ClassNotFoundException{ //1.注册驱动 Class.forName(jdbc_driver); //2.获取连接 Connection connection=DriverManager.getConnection(jdbc_conn,user,pass); return connection; } //释放连接资源的部分 public void relese(Connection conn,PreparedStatement pstmt) throws SQLException{ if(pstmt!=null) pstmt.close(); if(conn!=null) conn.close(); } }
#####数据库变化如下
一纸高中万里风,寒窗读破华堂空。
莫道长安花看尽,由来枝叶几相同?