/**
* 使用DBCP连接池获取数据库链接
* 连接池规范接口:
* javax.sql.DataSource
* 获取数据库链接的方法:Connection getConnection
* DBCP连接池,实现类sun公司提供的规范接口
* org.apache.commons.dbcp.BasicDataSource类 implments javax.sql.DataSource接口
* 重写了接口中的方法getConnection
*/
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.dbcp.BasicDataSource;
public class DBCPUtils {
//步骤1.创建一个BaseDataSource对象
private static BasicDataSource dbs = new BasicDataSource();
static {
dbs.setDriverClassName("com.mysql.jdbc.Driver");
dbs.setUrl("jdbc:mysql://localhost:3306/day_04");
dbs.setUsername("root");
dbs.setPassword("root");
}
public static Connection getConnection(){
try {
//步骤2.获取数据库链接
return dbs.getConnection();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException();
}
}
//步骤6.关闭流
public static void close(ResultSet rs,Connection conn,Statement state){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(state != null){
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBCPUtilTest01 {
public static void main(String[] args) {
//定义局部变量接收对象
Connection connection = null;
/**
* PreparedStatement是预编辑处理
* 设置占位符,可以防止sql攻击
*/
PreparedStatement pds = null;
ResultSet rs = null;
try {
connection = DBCPUtils.getConnection();
String sql = "select * from category where cid in (?,?,?)";
pds = connection.prepareStatement(sql);
pds.setObject(1, 1);
pds.setObject(2, 2);
pds.setObject(3, 3);
rs = pds.executeQuery();
while(rs.next()){
int cid = rs.getInt("cid");
String cname = rs.getString("cname");
System.out.println(cid + "--" + cname);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBCPUtils.close(rs, connection, pds);
}
}
}