一、使用c3p0连接池
1.1 新建一个项目,添加jar包,右键add as library。需要添加三个jar包。
1.2 导入c3p0配置文件,并修改其中的数据库名、用户名和密码
以下是demo1的代码:
package com.kx.c3p0;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class demo1 {
public static void main(String[] args) throws SQLException {
//DataSource是数据库连接池的一个接口,所有的连接池都要去实现这个接口。
//1.创建连接池对象
DataSource ds = new ComboPooledDataSource();
//2.获取连接
Connection conn = ds.getConnection();
//3.定义prepareastatement
String sql = "UPDATE account set balance=4000 where id=1";
PreparedStatement ps = conn.prepareStatement(sql);
ps.executeUpdate();
conn.close();//归还连接
}
}
二、使用druid数据库连接池
2.1 导入两个jar包和一个配置文件,并修改配置文件中的内容。
2.2 下面是执行的demo
package com.kx.druid;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;
public class demo1 {
public static void main(String[] args) throws Exception {
//首先要将配置文件中的数据放到集合中
Properties pro = new Properties(); //创建一个集合
pro.load(demo1.class.getClassLoader().getResourceAsStream("druid.properties"));
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
Connection conn = ds.getConnection();
String sql = "UPDATE account set balance=5000 where id=1";
PreparedStatement ps = conn.prepareStatement(sql);
ps.executeUpdate();
conn.close();//归还连接
}
}
三、将druid封装成工具包,进行调用
首先建一个类,将公共部分方法写入:
package com.kx.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.kx.druid.demo1;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class jdbcUtil {
private static DataSource ds;
static {
Properties pro = new Properties(); //创建一个集合
try {
pro.load(demo1.class.getClassLoader().getResourceAsStream("druid.properties"));
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDateSource(){
return ds;
}
public static void close(Statement st, Connection conn){
try {
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(ResultSet rs,Statement st, Connection conn){
try {
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
然后建一个测试类,进行调用:
package com.kx.druid;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.kx.util.jdbcUtil;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;
public class demo2 {
public static void main(String[] args) throws Exception {
//调用封装好的工具
DataSource ds = jdbcUtil.getDateSource();
Connection conn = ds.getConnection();
String sql = "UPDATE account set balance=3000 where id=1";
PreparedStatement ps = conn.prepareStatement(sql);
ps.executeUpdate();
//关闭也调用
jdbcUtil.close(ps,conn);
}
}