ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql实现学生信息的增删查

2021-10-18 21:59:45  阅读:120  来源: 互联网

标签:String int System 学生 println mysql 增删 public out


表名:examstudent

Student.java

package com.g03.bean;

public class Student {

	private int FlowID;
	private int Type;
	private String IDCard;
	private String ExamCard;
	private String StudentName;
	private String Location;
	private int Grade;
	public Student() {
		super();
	}
	public Student(int flowID, int type, String iDCard, String examCard, String studentName, String location,
			int grade) {
		super();
		FlowID = flowID;
		Type = type;
		IDCard = iDCard;
		ExamCard = examCard;
		StudentName = studentName;
		Location = location;
		Grade = grade;
	}
	public int getFlowID() {
		return FlowID;
	}
	public void setFlowID(int flowID) {
		FlowID = flowID;
	}
	public int getType() {
		return Type;
	}
	public void setType(int type) {
		Type = type;
	}
	public String getIDCard() {
		return IDCard;
	}
	public void setIDCard(String iDCard) {
		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 int getGrade() {
		return Grade;
	}
	public void setGrade(int grade) {
		Grade = grade;
	}
	@Override
	public String toString() {
		System.out.println("=======查询结果=======");
		return info();
	}
	private String info() {
		return "流水号:"+FlowID+"\n四/六级:"+Type+"\n身份证号:"+IDCard+"\n准考证号:"+ExamCard+"\n学生姓名:"+StudentName+"\n区域"
				+Location+"\n成绩:"+Grade;
	}
}

StudentCrud.java

package com.g03.preparedstatement;

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;
import org.junit.Test;
import com.g03.bean.Student;
import com.g03.util.JDBCUtils;

public class StudentCrud {
	Scanner scanner = new Scanner(System.in);

	@Test
	public void StudentInsert() {

		/**
		 * 插入信息
		 */
		System.out.println("请输入四或六级:");// int(5)
		int Type = scanner.nextInt();

		System.out.println("请输入身份证号码:");// vachar(18)
		String IDCard = scanner.next();

		System.out.println("请输入准考证号码:");// vachar(15)
		String ExamCard = scanner.next();

		System.out.println("请输入学生姓名:");// vachar(20)
		String StudentName = scanner.next();

		System.out.println("请输入区域:");// vachar(20)
		String Location = scanner.next();

		System.out.println("请输入成绩:");// int(10)
		int Grade = scanner.nextInt();

		String sql = "insert into examstudent(Type, IDCard, ExamCard , StudentName , Location , Grade)value(?,?,?,?,?,?)";

		int insertCount = update(sql, Type, IDCard, ExamCard, StudentName, Location, Grade);

		if (insertCount > 0) {
			System.out.println("添加成功!");
		} else
			System.out.println("添加失败!");
	}

	/**
	 * 按准考证或身份证查询
	 * 
	 * @param sql
	 * @param args
	 * @return
	 */
	@Test
	public void StudentQuery() {

		String sql = "";

		System.out.println("请选择查询方式");
		System.out.println("1.身份证号:");// vachar(18)
		System.out.println("2.准考证号码:");// vachar(15)

		System.out.printf("请输入1or2:");
		int number = scanner.nextInt();

		switch (number) {

		case 1:
			sql = "select FlowID ,Type, IDCard, ExamCard , StudentName , Location , Grade from examstudent where IDCard=?";
			System.out.println("1.请输入身份证号:");// vachar(18)
			String IDCard = scanner.next();
			Student student = getInstance(Student.class, sql, IDCard);
			if (student != null) {
				System.out.println(student);
			} else
				System.out.println("查无此人");
			break;
		case 2:
			sql = "select FlowID ,Type, IDCard, ExamCard , StudentName , Location , Grade from examstudent where ExamCard=?";
			System.out.println("请输入准考证号:");// vachar(18)
			String ExamCard = scanner.next();
			Student student1 = getInstance(Student.class, sql, ExamCard);
			if (student1 != null) {
				System.out.println(student1);
			} else
				System.out.println("查无此人");
			break;
		case 3:
			System.out.println("输入有误,请重新进入程序");
		}
	}
	
	/**
	 * 使用考生号或身份证号删除学生
	 */
	@Test
	public void deleteStudent() {
		String sql = "";

		System.out.println("请选择删除方式");
		System.out.println("1.身份证号:");// vachar(18)
		System.out.println("2.准考证号码:");// vachar(15)

		System.out.printf("请输入1or2:");
		int number = scanner.nextInt();

		switch (number) {

		case 1:
			sql = "delete from examstudent where IDCard=?";
			System.out.println("1.请输入身份证号:");// vachar(18)
			String IDCard = scanner.next();
			int insertCount = update(sql,IDCard);
			if (insertCount > 0) {
				System.out.println("删除成功!");
			} else
				System.out.println("删除失败!");
			break;
		case 2:
			sql = "delete from examstudent where ExamCard=?";
			System.out.println("请输入准考证号:");// vachar(18)
			String ExamCard = scanner.next();
			int insertCount1 = update(sql,ExamCard);

			if (insertCount1 > 0) {
				System.out.println("删除成功!");
			} else
				System.out.println("删除失败!");
			break;
		case 3:
			System.out.println("输入有误,请重新进入程序");
		}
	}

	// 通用增删改
	public int update(String sql, Object... args) {// Object ...args为可变形参

		Connection conn = null;
		PreparedStatement ps = null;
		try {
			// 1.获取连接
			conn = JDBCUtils.getConnection();
			// 2.预编译sql语句,返回preparedStatement的实例
			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 (int) ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 5.资源的关闭
			JDBCUtils.closeResource(conn, ps);
		}
		return 0;
	}

	/**
	 * 针对于不同表的通用查询操作,返回表中的一条记录
	 * 
	 * @param <T>
	 * @param clazz
	 * @param sql
	 * @param args
	 * @return
	 */
	public <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
			ResultSetMetaData rsmd = rs.getMetaData();
			// 通过ResultSetMetaData获取结果集中的列数
			int columnCount = rsmd.getColumnCount();

			if (rs.next()) {

				T t = clazz.newInstance();

				// 处理结果集一行数据中的每一个列
				for (int i = 0; i < columnCount; i++) {
					// 获取列值
					Object columValue = rs.getObject(i + 1);

					// 获取列的别名
					String columnLabel = rsmd.getColumnLabel(i + 1);
					// 给t对象指定的columnClassName属性,赋值为value
					Field field = clazz.getDeclaredField(columnLabel);
					field.setAccessible(true);
					field.set(t, columValue);
				}
				return t;
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtils.closeResource(conn, ps, rs);
		}
		return null;
	}
}

标签:String,int,System,学生,println,mysql,增删,public,out
来源: https://blog.csdn.net/m0_52180541/article/details/120835570

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有