本文共 3048 字,大约阅读时间需要 10 分钟。
前面我们封装了一个用于连接数据库和关闭资源的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"); Listlist = new ArrayList (); 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.插入练习
这里我直接贴单元测试代码
@Testpublic 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被删除
转载地址:http://fuows.baihongyu.com/