数据池C3P0、数据库mysql和DbUtils框架的联合运用
准备工作
需要准备好c3p0的数据池jar包、C3P0-config.xml文件、mysql数据库 jar包和最重要的DbUtils框架jar包并在mysql数据库中创建一个student的数据表(如图所示)。
配置文件
1.在项目里创建一个lib问价夹把上述三个jar放进去并(单击鼠标右键)buildpath产生如下图所示的效果。
这时我们的jar包就可以使用了。
2、比我们c3p0.xml配置文件修改相关的路径和数据库名称(如同所示)
运用代码把数据库中数据进行增、删、改、查。
准备好如上的工作我们就可以通过java代码对数据表进行增删查改操作了
1、创建一个学生类javabean
下面展示一些 内联代码片
。
下面展示一些 内联代码片
。
//javabean
public class Student {
private int id;
private String name;
private int password;
private String city;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(int id, String name, int password, String city) {
super();
this.id = id;
this.name = name;
this.password = password;
this.city = city;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "Studnt [id=" + id + ", name=" + name + ", password=" + password + ", city=" + city + "]";
}
2、加载数据池驱动创建连接
下面展示一些 内联代码片
。
private static DataSource dataSource = new ComboPooledDataSource();
// 创建连接
public static DataSource getDataSource() throws Exception {
return dataSource;
}
public static Connection getConnction() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException("连接失败");
}
}
public static void release(Connection connection,Statement statement,ResultSet resultSet) {
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (statement!=null) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.对数据进行增删改查操作
下面展示一些 内联代码片
。
// 查找一个学生
public void select() throws Exception {
QueryRunner queryRunner = new QueryRunner(DBUtils.getDataSource());
// 编写sql语句
String sql = "select * from student where name = ?";
Object params[] = {"sws"};
BeanHandler<Student> beanHandler = new BeanHandler<Student>(Student.class);
//执行sql语句
Student student = queryRunner.query(sql,beanHandler ,params);
System.out.println(student);
}
//查询全部学生
public void selectAll() throws Exception {
QueryRunner queryRunner = new QueryRunner(DBUtils.getDataSource());
//编写SQL语句
String sql = "select * from student";
BeanListHandler<Student> beanListHandler = new BeanListHandler<Student>(Student.class);
//执行sql语句
List<Student> student = queryRunner.query(sql, beanListHandler);
for(Student s:student) {
System.out.println(s);
}
}
//增加学生
public void update() throws Exception {
QueryRunner queryRunner = new QueryRunner(DBUtils.getDataSource());
//编写sql语句
String sql = "insert into student(id,name,password,city) values(?,?,?,?)";
Object parmas[] = {5,"cz",2222,"曲靖"};
//执行语句
int update = queryRunner.update(sql, parmas);
if (update>0) {
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
}
//删除学生
public void delete() throws Exception {
QueryRunner queryRunner = new QueryRunner(DBUtils.getDataSource());
//编写sql语句
String sql = "delete from student where name =?";
Object parmas[] = {"cz"};
//执行语句
int update = queryRunner.update(sql, parmas);
if (update>0) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
}
//修改学生
public void insert() throws Exception {
QueryRunner queryRunner = new QueryRunner(DBUtils.getDataSource());
//编写sql语句
String sql = "update student set password=? where name=? ";
Object parmas[] = {9621,"lm"};
//执行sql语句
int update = queryRunner.update(sql, parmas);
if (update>0) {
System.out.println("修改成功");
}else {
System.out.println("修改失败");
}
}
4.最后通过一个Test类调用被封装好的增删改查方法
下面展示一些 内联代码片
。
public static void main(String[] args) {
StudentDao dao = new StudentDao();
try {
// 查询一个学生
// dao.select();
// 查询全部学生
// dao.selectAll();
// 修改学生
// dao.update();
// 删除学生
// dao.delete();
// 插入学生
dao.insert();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
总结
在进行数据交互的过程中需要注意,数据池文件的配置和路径,其次是相关的jar包的准备工作。如果有不懂的小伙伴可以私信我。