[Java] 纯文本查看 复制代码
import java.io.FileInputStream;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
public class DBCPUtils {
// 创建 DBCP 核心类 BasicDataSource
private static BasicDataSource dataSource = new BasicDataSource();
// 定义为静态代码块,让DBCPUtils类一加载,就初始化 BasicDataSource
static {
// 声明一个配置文件集合
Properties per = new Properties();
try {
// 加载配置文件中的内容到Map集合中
per.load(new FileInputStream("dbcp.properties"));
// 获取集合中的 键 所对应的值
String driverClass = per.getProperty("driverClass");
String url = per.getProperty("url");
String username = per.getProperty("username");
String password = per.getProperty("password");
// 设置BasicDataSource类的初始值
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("初始化失败");
}
}
// 因为 BasicDataSource类 实现了 DataSource接口,所以这里可以使用多态,返回的实际是BasicDataSource实现类
public static DataSource getDataSource (){
return dataSource;
}
}
[Java] 纯文本查看 复制代码
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
public class DBCP_Demo {
// 因为在以下静态方法中多次用到,所以这里将 DBUtils与DBCP的核心 定义为静态成员变量
// QueryRunner为DBUtils的核心,BasicDataSource为DBCP的核心
public static QueryRunner qr = new QueryRunner(DBCPUtils.getDataSource());
public static void main(String[] args) throws SQLException {
//insert();
//update();
//select();
//delete();
}
// 增
public static void insert() throws SQLException {
// 1.获取DBCP连接池
//DataSource dataSource = DBCPUtils.getDataSource();
// 2.向dbutils工具 核心类QueryRunner 构造中传入 DataSource 的实现类 BasicDataSource连接池(作用:使程序运行更高效)
//QueryRunner qr = new QueryRunner(dataSource);
// 3.声明sql语句
String sql = "insert into user values (null,?,?)";
// 4.执行sql语句,并返回一个行数影响值(影响了几行记录)
int result = qr.update(sql, "zhang","12345");
// 5.打印反馈的影响值
System.out.println(result);
// !连接池不用释放资源
}
// 改
public static void update() throws SQLException{
String sql = "update user set username = ?, password = ? where id = ?";
int result = qr.update(sql, "michael", "54321", 1);
System.out.println(result);
}
// 查
public static void select() throws SQLException {
String sql = "select username,password from user";
// 执行sql语句,并返回匿名类所对应的结果集
List<Object[]> list = qr.query(sql, new ArrayListHandler());
// 获取并打印结果集中的信息
/*for (Object[] objs : list) {
for (Object obj : objs) {
// 显示 数据库中所有的 账号、密码信息
System.out.print(obj+" ");
}
}*/
//因为知道查询结果只有2个列名,也可以使用以下方式遍历
for (Object[] objs : list) {
Object username = objs[0];
Object password = objs[1];
System.out.println("帐号:"+username+"\t密码:"+password);
}
}
// 删
public static void delete() throws SQLException {
String sql = "delete from user where id = ?";
int result = qr.update(sql, 1);
System.out.println(result);
}
}