JDBC实现四六级考试记录添加、查询、删除功能
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实现四六级考试记录添加、查询、删除功能相关推荐
- [附源码]java毕业设计四六级考试管理系统
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 四六级考试报名系统c语言,四六级考试系统课程设计报告.doc
四六级考试系统课程设计报告 <.NET架构及应用>期末考试 (课程设计总结) 设计名称: 英语四.六级考试报名系统 组 长: 白缔祖 参 加 人: 白缔祖.霍晓文 指导教师: 付向东 班 ...
- electron 打印需要联网的吗?_英语四六级考试准考证怎么打印,需要彩打吗
成功报名2019年下半年英语四六级考试的同学,不要忘记自己的四六级准考证哦,根据各高校不同的规定,有的学校会由学校统一打印,下发到考生手中:有的学校需要考生自行打印,那么,自行打印准考证,四六级准考证 ...
- asp.net英语四六级考试报名系统
英语是我国的第一外语,基本上每一个大学生在校期间都会考试英语四六级,传统的英语考试,四六级报名都是在学校的教务处或者通过班主任进行报考,这很不方便.尤其是在现在一个互联网这么发达的时代,如果还是通过这 ...
- 计算机考试不在学籍库,毕业生学籍库无匹配?学校不让报?今年四六级考试还能参加吗...
原标题:毕业生学籍库无匹配?学校不让报?今年四六级考试还能参加吗 各大高校的四六级报名工作已经陆续进行了,这周又迎来了新的一波报名!你报上了没? 要说报名最心切的应该就是今年的毕业生了,毕竟!只有!最 ...
- 四六级考试公众号图文排版攻略
四六级考试马上就要开始了,小编的朋友圈已经炸开锅了,到处都是四六级的身影: "马上就要考试了,什么都不会""过不了怎么办?会影响拿毕业证吗?""原来过 ...
- 大学英语四六级考试有什么备考技巧?
大学英语四六级考试资料包括电子教材.四级词汇教材.六级词汇教材.历年考试真题.真题解析.听力电子教材和音频.阅读专项练习教材.作文强化练习教材.口语考试课程.口语考试电子教材.考试视频课程.视频讲解. ...
- 用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)(二)
本文上接用JDBC写一个学生管理系统(添加.删除.修改.查询学生信息) 这次主要是对上一文中的查询方法做一下调整,用创建内部类的方法来实现学生信息的查询. 我们先要定义一个接口IRowMapper: ...
- python统计词频_Python统计四六级考试的词频
Python统计四六级考试的词频 此文首发于公众号 「Python知识圈」, 欢迎直接去公众号查看 阅读文本大概需要 4.6 分钟. 今天是教师节,先祝天下所有老师教师节快乐,感谢您在我学生时代对我的 ...
最新文章
- 一个空值_MySQL数据库表中 NULL 和空值到底有什么区别呢?
- CentOS+Nginx+Tomcat+Mysql+PHP 环境搭建及系统部署
- Palm pre,我的M8又要落伍了
- 使用mpvue和wepy开发小程序
- 电脑连接电视方法详解_HDMI高清线如何连接电脑与电视,简单安装步骤,真是太有用了...
- GitHub 标星 5000+!学生党学编程,有这份资料就够了!
- Sass mixin与extends、%placeholder、function
- sql 计算 某字段 不同值出现 的次数_教你如何合理选用和计算电线规格,电线回路分配和注意事项...
- python在浏览器运行一片空白_Webdriver启动Firefox浏览器后,页面显示空白
- 不刷新改变URL: pushState + Ajax
- 20年前的吴恩达,藏在一个数据集里
- Hive窗口函数的使用
- 橡皮筋框QRubberBand Class
- 股票行情查询易语言代码
- 3dmax文件打不开了,怎么办
- 什么是javaweb开发?
- android 加载网络图片,并压缩bitmap内存大小
- 生日悖论分析python_Python关于生日悖论分析
- [Ubuntu] 在安卓手机中安装 Ubuntu
- Unity 文字显示动画