JDBC实现四六级考试记录添加、查询、删除功能

1. 代码演示

2. 项目的目录结构

3. 数据库mysql

4. code

4.1 ExamTest.class

package com.shan.examprace;import com.shan.bean.ExamStudent;
import com.shan.util.JDBCUtils;
import org.junit.Test;import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Scanner;/*** @author shan* @date 2021/5/13*/
public class ExamTest {public static void main(String[] args) {System.out.println("请选择你要输入的类型:");System.out.println("a.添加考生信息");System.out.println("b.查询考生信息");System.out.println("c.删除考生信息");Scanner scanner = new Scanner(System.in);String sel = scanner.next();if("a".equalsIgnoreCase(sel)){//问题1:向examstudent表中添加一条数据testInsert();}else if("b".equalsIgnoreCase(sel)){//问题2:根据身份证号或者准考证号查询学生成绩信息queryWithIDCardOrExamCard();}else if("c".equalsIgnoreCase(sel)){//问题2:根据身份证号或者准考证号查询学生成绩信息delWithExamCard();}else {System.out.println("您的输入有误,请重新进入程序。");}}private static void delWithExamCard() {Scanner scanner = new Scanner(System.in);System.out.println("请输入要删除考生的准考证号:");String examCard = scanner.next();String sql = "DELETE FROM examstudent WHERE ExamCard = ?";int delcount = update(sql, examCard);if(delcount!=0){System.out.println("删除成功!");}else {System.out.println("查无此人,删除失败!");}}public static void queryWithIDCardOrExamCard(){System.out.println("请选择你要输入的类型:");System.out.println("a.准考证号");System.out.println("b.身份证号");Scanner scanner = new Scanner(System.in);String sel = scanner.next();if("a".equalsIgnoreCase(sel)){System.out.println("请输入准考证号:");String examCard = scanner.next();//若数据库字段名和ExamStudent.class中不一致时,需要起别名// FlowID --> 数据库字段名 、 flowID ExamStudent类 --> 字段名// String sql = "select FlowID flowID,Type type,IDCard,ExamCard examCard,StudentName name, Location location, Grade grade from examstudent where examCard=?";String sql = "select * from examstudent where ExamCard=?";ExamStudent student = getInstance(ExamStudent.class, sql, examCard);if(student!=null){System.out.println(student);}else {System.out.println("输入的准考证号有误!");}}else if("b".equalsIgnoreCase(sel)){System.out.println("请输入身份证号:");String IDCard = scanner.next();String sql = "select * from examstudent where IDCard=?";ExamStudent student = getInstance(ExamStudent.class, sql, IDCard);if(student!=null){System.out.println(student);}else {System.out.println("输入的准考证号有误!");}}else {System.out.println("您的输入有误,请重新进入程序。");}}public static void testInsert() {Scanner scanner = new Scanner(System.in);System.out.print("四级/六级(输入格式: 4/6): ");int Type = scanner.nextInt();System.out.print("身份证号: ");String IDCard = scanner.next();System.out.print("准考证号: ");String ExamCard = scanner.next();System.out.print("学生姓名: ");String StudentName = scanner.next();System.out.print("所在城市: ");String Location = scanner.next();System.out.print("学生成绩: ");String Grade = scanner.next();String sql = "insert into examstudent(Type,IDCard,ExamCard,StudentName,Location,Grade)values(?,?,?,?,?,?)"; //?,?表示占位符int insertCount = update(sql, Type,IDCard,ExamCard,StudentName,Location,Grade);System.out.println(insertCount>0?"添加成功":"添加失败");}public static <T> T getInstance(Class<T> clazz,String sql,Object ...args){Connection conn = null;PreparedStatement ps =null;ResultSet rs = null;try {conn = JDBCUtils.getConnection();ps = conn.prepareStatement(sql);for (int i = 0; i < args.length; i++)ps.setObject(i + 1, args[i]);rs = ps.executeQuery();// 获取结果集的元数据ResultSetMetaData rsmd = rs.getMetaData();//通过ResultSetMetaData获取结果集的列数int columnCount = rsmd.getColumnCount();if (rs.next()) {T t = clazz.newInstance();//处理结果集一行数据中的每一列for (int i = 0; i < columnCount; i++) {//获取列值Object columnValue = rs.getObject(i + 1);//获取每个列的列名String columnName = rsmd.getColumnName(i + 1);//给cust对象指定columnName的属性,赋值为columnvalue,通过反射Field field = clazz.getDeclaredField(columnName);field.setAccessible(true);field.set(t, columnValue);}return t;}}catch (Exception e){e.printStackTrace();}finally {JDBCUtils.closeResource(conn, ps, rs);}return null;}//通用的增删改操作public static int update(String sql, Object... args) {//sql中占位符的个数应该与可变形参的长度一致Connection conn = null;PreparedStatement ps = null;try {//1.获取数据库的连接conn = JDBCUtils.getConnection();//2.预编译sql语句,返回PrepareStatement的实例ps = conn.prepareStatement(sql);//3.填充占位符for (int i = 0; i < args.length; i++) {ps.setObject(i + 1, args[i]);}//4.执行//ps.execute(): 如果执行的是查询操作且有返回结果,返回true; 如果执行的是增、删、改操作,没有返回值 返回false;//方式一://return ps.execute();//方式二:return ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {//5.资源的关闭JDBCUtils.closeResource(conn, ps);}return 0;}
}

4.2 ExamStudent.class

package com.shan.bean;/*** @author shan* @date 2021/5/13*/
public class ExamStudent {private long FlowID; //流水号private long Type; //考试类型private String IDCard; //身份证号private String ExamCard; //准考证号private String StudentName; //学生姓名private String Location; // 所在城市private long Grade; //分数public ExamStudent() {}public ExamStudent(long flowID, long type, String IDCard, String examCard, String studentName, String location, long grade) {FlowID = flowID;Type = type;this.IDCard = IDCard;ExamCard = examCard;StudentName = studentName;Location = location;Grade = grade;}public long getFlowID() {return FlowID;}public void setFlowID(long flowID) {FlowID = flowID;}public long getType() {return Type;}public void setType(long type) {Type = type;}public String getIDCard() {return IDCard;}public void setIDCard(String IDCard) {this.IDCard = IDCard;}public String getExamCard() {return ExamCard;}public void setExamCard(String examCard) {ExamCard = examCard;}public String getStudentName() {return StudentName;}public void setStudentName(String studentName) {StudentName = studentName;}public String getLocation() {return Location;}public void setLocation(String location) {Location = location;}public long getGrade() {return Grade;}public void setGrade(long grade) {Grade = grade;}@Overridepublic String toString() {System.out.println("===========查询结果===========");return info();
//        return "ExamStudent{" +
//                "FlowID=" + FlowID +
//                ", Type=" + Type +
//                ", IDCard='" + IDCard + '\'' +
//                ", ExamCard='" + ExamCard + '\'' +
//                ", StudentName='" + StudentName + '\'' +
//                ", Location='" + Location + '\'' +
//                ", Grade=" + Grade +
//                '}';}private String info() {return "流水号:" + FlowID+ "\n四级/六级:" + Type+ "\n身份证号:" + IDCard+ "\n准考证号:" + ExamCard+ "\n考生姓名:" + StudentName+ "\n所在地区:" + Location+ "\n成绩:" + Grade;}
}

4.3 JDBCUtils.class

package com.shan.util;import com.shan.connection.ConnectionTest;import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;/*** @author shan* @date 2021/5/7* 操作数据库的工具类*/
public class JDBCUtils {//获取数据库连接public static Connection getConnection() throws Exception {InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");Properties pros = new Properties();pros.load(is);String user = pros.getProperty("user");String password = pros.getProperty("password");String DB_URL = pros.getProperty("DB_URL");String JDBC_DRIVER = pros.getProperty("JDBC_DRIVER");//2.加载驱动Class.forName(JDBC_DRIVER);//3.获取连接Connection conn = DriverManager.getConnection(DB_URL, user, password);return conn;}//关闭数据库的连接操作public static void closeResource(Connection conn, PreparedStatement ps){//资源的关闭try {if(ps != null)ps.close();} catch (SQLException e){e.printStackTrace();}try {if(conn != null)conn.close();} catch (SQLException e){e.printStackTrace();}}// 查找的 资源关闭public static void closeResource(Connection conn, PreparedStatement ps, ResultSet result){//资源的关闭try {if(ps != null)ps.close();} catch (SQLException e){e.printStackTrace();}try {if(conn != null)conn.close();} catch (SQLException e){e.printStackTrace();}try {if(result != null)result.close();} catch (SQLException e){e.printStackTrace();}}
}

4.4 jdbc.properties

user=root
password=shan5211314..
DB_URL=jdbc:mysql://localhost:3306/test
JDBC_DRIVER=com.mysql.jdbc.Driver

代码主要翻译自:尚硅谷JDBC核心技术(新版jdbc)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

JDBC实现四六级考试记录添加、查询、删除功能相关推荐

  1. [附源码]java毕业设计四六级考试管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  2. 四六级考试报名系统c语言,四六级考试系统课程设计报告.doc

    四六级考试系统课程设计报告 <.NET架构及应用>期末考试 (课程设计总结) 设计名称: 英语四.六级考试报名系统 组 长: 白缔祖 参 加 人: 白缔祖.霍晓文 指导教师: 付向东 班 ...

  3. electron 打印需要联网的吗?_英语四六级考试准考证怎么打印,需要彩打吗

    成功报名2019年下半年英语四六级考试的同学,不要忘记自己的四六级准考证哦,根据各高校不同的规定,有的学校会由学校统一打印,下发到考生手中:有的学校需要考生自行打印,那么,自行打印准考证,四六级准考证 ...

  4. asp.net英语四六级考试报名系统

    英语是我国的第一外语,基本上每一个大学生在校期间都会考试英语四六级,传统的英语考试,四六级报名都是在学校的教务处或者通过班主任进行报考,这很不方便.尤其是在现在一个互联网这么发达的时代,如果还是通过这 ...

  5. 计算机考试不在学籍库,毕业生学籍库无匹配?学校不让报?今年四六级考试还能参加吗...

    原标题:毕业生学籍库无匹配?学校不让报?今年四六级考试还能参加吗 各大高校的四六级报名工作已经陆续进行了,这周又迎来了新的一波报名!你报上了没? 要说报名最心切的应该就是今年的毕业生了,毕竟!只有!最 ...

  6. 四六级考试公众号图文排版攻略

    四六级考试马上就要开始了,小编的朋友圈已经炸开锅了,到处都是四六级的身影: "马上就要考试了,什么都不会""过不了怎么办?会影响拿毕业证吗?""原来过 ...

  7. 大学英语四六级考试有什么备考技巧?

    大学英语四六级考试资料包括电子教材.四级词汇教材.六级词汇教材.历年考试真题.真题解析.听力电子教材和音频.阅读专项练习教材.作文强化练习教材.口语考试课程.口语考试电子教材.考试视频课程.视频讲解. ...

  8. 用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)(二)

    本文上接用JDBC写一个学生管理系统(添加.删除.修改.查询学生信息) 这次主要是对上一文中的查询方法做一下调整,用创建内部类的方法来实现学生信息的查询. 我们先要定义一个接口IRowMapper: ...

  9. python统计词频_Python统计四六级考试的词频

    Python统计四六级考试的词频 此文首发于公众号 「Python知识圈」, 欢迎直接去公众号查看 阅读文本大概需要 4.6 分钟. 今天是教师节,先祝天下所有老师教师节快乐,感谢您在我学生时代对我的 ...

最新文章

  1. 一个空值_MySQL数据库表中 NULL 和空值到底有什么区别呢?
  2. CentOS+Nginx+Tomcat+Mysql+PHP 环境搭建及系统部署
  3. Palm pre,我的M8又要落伍了
  4. 使用mpvue和wepy开发小程序
  5. 电脑连接电视方法详解_HDMI高清线如何连接电脑与电视,简单安装步骤,真是太有用了...
  6. GitHub 标星 5000+!学生党学编程,有这份资料就够了!
  7. Sass mixin与extends、%placeholder、function
  8. sql 计算 某字段 不同值出现 的次数_教你如何合理选用和计算电线规格,电线回路分配和注意事项...
  9. python在浏览器运行一片空白_Webdriver启动Firefox浏览器后,页面显示空白
  10. 不刷新改变URL: pushState + Ajax
  11. 20年前的吴恩达,藏在一个数据集里
  12. Hive窗口函数的使用
  13. 橡皮筋框QRubberBand Class
  14. 股票行情查询易语言代码
  15. 3dmax文件打不开了,怎么办
  16. 什么是javaweb开发?
  17. android 加载网络图片,并压缩bitmap内存大小
  18. 生日悖论分析python_Python关于生日悖论分析
  19. [Ubuntu] 在安卓手机中安装 Ubuntu
  20. Unity 文字显示动画

热门文章

  1. C小程序【RGB24 to RGB16颜色转换器】
  2. 建网站的最简单方法(三分钟带后台)
  3. java代码实现百度云存储
  4. java中的四舍五入——几种四舍五入的写法
  5. 什么是Zachman框架?
  6. java期末考试知识点复习总结
  7. 喵了个咪!redux middleware居然如此简单!
  8. C语言数组—经典扫雷游戏
  9. Evernote 导出到 Word
  10. 怎么把服务器信号投到笔记本电脑上,笔记本怎么连接投影仪 笔记本连接投影仪无信号解决方法...