练习一:插入一个学生的四六级成绩:
//课后练习 public class task3 { //添加一条数据 @Test public void testInsert() { int id=1; Scanner scanner =new Scanner(System.in); System.out.println("四季/六级"); int type=scanner.nextInt(); System.out.println("身份证号"); String idCard = scanner.next(); System.out.println("准考证号"); String examCard=scanner.next(); System.out.println("学生姓名:"); String name=scanner.next(); System.out.println("学生成绩:"); int grade=scanner.nextInt(); String sql="insert into examstudent(flowId,type,idCard,examCard,name,Grade)values(?,?,?,?,?,?)"; // int insertCount=update(sql,id++,type,idCard,examCard,name,grade); //根据返回值判断是否插入成功 if(insertCount>0) { System.out.println("插入成功"); } else{ System.out.println("插入失败"); } } //插入数据函数 public int update(String sql,Object ...args) { Connection conn=null; PreparedStatement ps=null; try { conn=JDBCUtils.getConnction5(); ps=(PreparedStatement) conn.prepareStatement(sql); for(int i=0;i<args.length;i++){ ps.setObject(i+1, args[i]); } return ps.executeUpdate(); //返回影响了多少条数据 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ JDBCUtils.closeResource(conn, ps); } return 0; } }
作业二:四六级成绩查询
@Test public void queryWithId() { System.out.println("请选择您要输入的类型:"); System.out.println("a.准考证号"); System.out.println("b.身份证号"); Scanner scanner=new Scanner(System.in); String slection =scanner.next(); if("a".equalsIgnoreCase(slection)) { System.out.println("请输入注考证号:"); String examCard=scanner.next(); String sql="select flowId flowId,idCard IDCard,examCard examCard,name name,Grade grade from examstudent where examCard=?"; //为每个字段取别名,别名需要和Student对象中的数据类型一致 Student student=getInstance(Student.class, sql, examCard); System.out.println(student); }else if("b".equalsIgnoreCase(slection)) { System.out.println("请输入身份证号:"); String Idcard=scanner.next(); String sql="select flowId flowId,idCard IDCard,examCard examCard,name name,Grade grade from examstudent where examCard=?"; Student student=getInstance(Student.class, sql, Idcard); //调用通用查询接口 System.out.println(student); } else { System.out.println("您输入的数据有误,请重新输入!"); } } //通用查询的函数 public <T> T getInstance(Class<T> clazz,String sql,Object ...args){ Connection conn =null; PreparedStatement ps=null; ResultSet rs=null; try { conn=JDBCUtils.getConnction5(); ps=(PreparedStatement) conn.prepareStatement(sql); for(int i=0;i<args.length;i++) { ps.setObject(i+1,args[i]); } rs=ps.executeQuery(); ResultSetMetaData rsmd=(ResultSetMetaData) rs.getMetaData(); 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 columnLable1=rsmd.getColumnLabel(i+1); java.lang.reflect.Field field=clazz.getDeclaredField(columnLable1); field.setAccessible(true); field.set(t,columValue); } return t; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }