查询和删除
来源:互联网 发布:淘宝推广文案怎么写 编辑:程序博客网 时间:2024/06/16 13:37
查询代码:
/** * MVC: Model View Controller * * 把 View 视图(看得见的, 需要进行输入的)、 Model 模型(实际的逻辑代码: Dao 在这一部分)、 Controller * 控制器(连接视图和模型的代码: 测试方法) 分开 */ @Test public void testGetStudent() throws SQLException, Exception { // 1. 获取输入的信息: 可能是一个身份证号也可能是一个准考证号. String cardId = getCardIdFromConsole(); if (cardId == null) { return; } // 2. 执行查询 Student student = null; StudentDao studentDao = new StudentDao(); // 准考证号 if (cardId.length() == 15) { student = studentDao.getByExamCard(cardId); } // 身份证号 else { student = studentDao.getByIdCard(cardId); } // 3. 打印学员信息 printStudent(student); } private void printStudent(Student student) { System.out.println("==========查询结果=========="); System.out.println("流水号:" + student.getId()); System.out.println("四级\\六级:" + student.getType()); System.out.println("身份证号:" + student.getIdCard()); System.out.println("准考证号:" + student.getExamCard()); System.out.println("学生姓名:" + student.getStudentName()); System.out.println("区域:" + student.getLocation()); System.out.println("成绩:" + student.getGrade()); } private String getCardIdFromConsole() { System.out.println("选择您要输入的类型."); System.out.println("a:准考证号"); System.out.println("b:身份证号"); Scanner scanner = new Scanner(System.in); String type = scanner.next(); if (!("a".equals(type) || "b".equals(type))) { System.out.println("您的输入有误, 请重新进入程序"); return null; } if ("a".equals(type)) { System.out.println("请输入准考证号:"); } else { System.out.println("请输入身份证号:"); } return scanner.next(); }
StudentDao.java
public Student getByExamCard(String cardId) throws SQLException, Exception { //QueryRunner 是线程安全的! private QueryRunner queryRunner = new QueryRunner(); String sql = "SELECT flow_id id, type, id_card idCard, exam_card examCard, " + "student_name studentName, location, grade " + "FROM examstudent " + "WHERE exam_card = ?"; return queryRunner.query(JdbcUtils.getConnection(), sql, new BeanHandler(Student.class), cardId); } public Student getByIdCard(String cardId) throws SQLException, Exception { //QueryRunner 是线程安全的! private QueryRunner queryRunner = new QueryRunner(); String sql = "SELECT flow_id id, type, id_card idCard, exam_card examCard, " + "student_name studentName, location, grade " + "FROM examstudent " + "WHERE id_card = ?"; return queryRunner.query(JdbcUtils.getConnection(), sql, new BeanHandler(Student.class), cardId); }
=========================
删除代码:
@Test public void testDeleteByExamCard() throws SQLException, Exception { String examCardId = getExamCardIdFromConsole(); StudentDao2 studentDao = new StudentDao2(); Connection connection = null; try { connection = JdbcUtils.getConnection(); // 开启事务 connection.setAutoCommit(false); int rowNumber = studentDao.deleteByExamCard(connection, examCardId); if (rowNumber == 1) { System.out.println("删除成功!"); } else if (rowNumber == 0) { System.out.println("查无此人, 请重新输入."); } // 提交事务 DbUtils.commitAndCloseQuietly(connection); } catch (Exception e) { e.printStackTrace(); // 回滚事务 DbUtils.rollbackAndClose(connection); } }
StudentDao.java
public int deleteByExamCard(String examCardId) throws SQLException, Exception { String sql = "DELETE FROM examstudent WHERE exam_card = ?"; //对于 update 而言, 返回值实际上是该条 SQL 语句作用的行数. //以删除为例, 若删除了 n 行, 则返回值为 n return queryRunner.update(JdbcUtils.getConnection(), sql, examCardId); }
========================
疑问:
// 问题1: 数据库事务: 如何关闭数据库连接呢 ? 在后面说完数据库事务后来重构代码 ? // 问题2: 批量处理: 可以同时录入多条记录吗 ? 若录入多条记录, 和录入一条记录有区别吗 ? // 问题3: 更加通用的 DAO: 适用于更多实体类的 DAO. 需要用到反射技术. 同时使用 DBUtils // 问题4: 如何向数据表中插入一张图片 ? 以及如何把图片从数据表中获取出来 // 问题5: 数据库连接池
阅读全文
0 0
- 查询和删除
- android删除和查询通话记录
- 自定义菜单查询和删除
- litepal查询和删除数据
- MongoDB 删除和查询文档
- 查询和删除有重复的记录
- 处理表重复记录(查询和删除)
- 处理表重复记录(查询和删除)
- 处理表重复记录(查询和删除)
- 处理表重复记录(查询和删除)
- --处理表重复记录(查询和删除)
- 处理表重复记录(查询和删除)
- 处理表重复记录(查询和删除)
- Oracle查询和删除JOB的SQL
- 查询和删除表中重复记录
- 处理表重复记录(查询和删除)
- 处理表重复记录(查询和删除)
- 处理表重复记录(查询和删除)
- 第二周项目2
- linux学习笔记(21)
- PopupWindow 详解
- 微信小程序开发 错误修改方法笔记
- 浅析VO、DTO、DO、PO的概念、区别和用处
- 查询和删除
- L1-040. 最佳情侣身高差
- es6学习笔记10--箭头函数
- UITextView 内边距设置
- 极化码小结(2)
- EL表达式
- 如何才能找到靠谱的网站建设公司
- 1090:哥德巴赫猜想
- binder 3 驱动层数据结构