JavaWeb学习-JDBC系列-8-基于DBUtils工具类的CRUD练习

前面我们封装了一个用于连接数据库和关闭资源的DBUtils的类,可以减少很多重复的代码。这个类,提供了连接数据库和关闭资源的两个静态方法。再次复习下这个类中加载properties文件,为什么要使用静态代码块,也就是static{},因为我们想,这个DBUtils类一加载到JVM虚拟机就里面执行加载解析propertes文件操作。这个技巧,我们之前在Selenium自动化中写driver的初始化也用上了。

1.数据表准备

为了我们下一篇的练习,这里我给这个student表新增一个password字段,也就是学生密码,方便我们后面文章来做登录练习。

执行sql语句或者小海豚上图形界面操作。

alter table student add pwd char(20);

我这里随机给当前已有学生添加密码

2.查询练习

这个我们在前面一篇文章的练习之后,把查询的结果集封装成Student对象,这里新加了一个字段,所以,我们的Student.java里面也需要新加一个private String password 和set get方法。

package demo;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.anthony.utils.DBUtils;

public class CURD {
	
	@Test
	public void testSelect() {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		
		try {
			conn = DBUtils.getConnection();
			stmt = conn.createStatement();
			rs = stmt.executeQuery("SELECT * FROM student");
			List<Student> list = new ArrayList<Student>();
			while(rs.next()) {
				Student s = new Student();
				s.setName(rs.getString("Name"));
				s.setId(rs.getInt("ID"));
				s.setGender(rs.getString("Gender"));
				s.setAge(rs.getInt("Age"));
				s.setPassword(rs.getString("pwd"));
				// 把student对象添加到集合中
				list.add(s);
			}
			//遍历集合
			for (Student student : list) {
				System.out.println(student.toString());
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtils.close(conn, stmt, rs);
		}
	}
}

测试结果:


Student [Id=192101, Name=Tom, Gender=male, Age=19, password=123]
Student [Id=192102, Name=Lucy, Gender=female, Age=18, password=456]
Student [Id=192103, Name=Dniel, Gender=male, Age=20, password=111]
Student [Id=192104, Name=Sunny, Gender=female, Age=18, password=2222]
Student [Id=192105, Name=Anthony, Gender=male, Age=23, password=123456]

3.插入练习

这里我直接贴单元测试代码

@Test
public void testInsert() {
	Connection conn = null;
	Statement stmt = null;
		
	try {
		conn = DBUtils.getConnection();
		stmt = conn.createStatement();
		int i = stmt.executeUpdate("INSERT INTO student VALUES ('192106','Lisi','male','22','333')");
		if (i > 0) {
			System.out.println("插入成功");
		}
			
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		DBUtils.close(conn, stmt, null);
	}
}

4.更新练习

这里,我把Anthony的年龄从23改成18.

        @Test
	public void testUpdate() {
		Connection conn = null;
		Statement stmt = null;
		
		try {
			conn = DBUtils.getConnection();
			stmt = conn.createStatement();
			int i = stmt.executeUpdate("UPDATE student SET Age='18' WHERE Name='Anthony'");
			if (i > 0) {
				System.out.println("更新成功");
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtils.close(conn, stmt, null);
		}
	}

刷新一下小海豚,或者执行上面查询的用例。

5.删除练习

这里我把Tom这行数据删除

        @Test
	public void testDelete() {
		Connection conn = null;
		Statement stmt = null;
		
		try {
			conn = DBUtils.getConnection();
			stmt = conn.createStatement();
			int i = stmt.executeUpdate("DELETE FROM student WHERE Name='Tom'");
			if (i > 0) {
				System.out.println("删除成功");
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBUtils.close(conn, stmt, null);
		}
	}

结果Tom被删除

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值