数据库考试机试题

这是一篇关于数据库操作的实践题目,包括创建数据库exam_db及两个表ex_class和ex_student,涉及字段如班级ID、班级名称、学生ID、学生名字等。此外,还要求使用jdbc连接数据库,实现增加、修改、删除、查询等操作,并使用JDBCTools工具类。同时,需遵循MVC模式进行包结构组织,并用Junit进行测试。
摘要由CSDN通过智能技术生成

数据库考试机试题

  1. 所有的数据库操作都使用sql并保存为exam.sql文件.
  2. 交卷时,将sql文件放入到自己名字的文件夹,与Java代码一起交上来.
  3. 必须按照MVC模式建包.测试类写在view包下.

按要求完成如下题目:

  1. 创建数据库exam_db,并创建一个表ex_class,请写出sql. 5分
    班级ID 数字 主键,自动增长
    班级名称 字符100
    开班日期 日期
    创建一个表ex_student,请写出sql. 5分
    学生ID 数字 主键,自动增长100开始
    学生名字 字符100
    学生java成绩 数字
    学生年龄 数字
    学生性别 字符
    所在班级 数字 外键
  2. 使用jdbc连接数据库并完成如下操作:
    a. 数据库配置文件使用db.xml,并自己完成JDBCTools工具类的编写. 10分
    b. 将两个表的Dao完成,分别具有的方法为:增加,修改,删除,查询所有,根据ID查询对象. 30分
    c. 在学生表中增加一个方法,按照班级名称查询所有的学生的方法.findByClassName(String className); 10分
    d. 在学生表中增加一个方法,按照班级分组查询各班的Java平均成绩.findGoupByClass(); 10分
    e. 开发出测试类,将数据插入到数据库,并进行相关增删改查的测试.要求保留测试代码. 10分
    f. 测试使用Junit. 5分
    g. 使用MVC模式建包. 5分
    h. 代码命名规范,注释合理,包名合理(10分)

// 以下为本人机试卷,本非正确答案

– 创建数据库
CREATE DATABASE exam_db;
– 创建班级表
CREATE TABLE ex_class(
class_id INT PRIMARY KEY AUTO_INCREMENT, – 班级ID
class_name VARCHAR(100), – 班级名称
class_date DATETIME – 开班日期
);

– 创建学生表
CREATE TABLE ex_student(
stu_id INT PRIMARY KEY AUTO_INCREMENT, – 学生ID
stu_name VARCHAR(100), – 学生名称
stu_score INT, – 学生java成绩
stu_age INT, – 学生年龄
stu_sex VARCHAR(10), – 学生性别
class_id INT, – 所在班级
CONSTRAINT fk_class_id FOREIGN KEY (class_id) REFERENCES ex_class(class_id) – 外键
);

Dao

/**
*
*/
package com.yidu.exam.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.yidu.exam.model.Classes;
import com.yidu.exam.utils.JDBCTools;

/**

  • 描述:班级Dao

  • @author zhouyuxian

  • @date 2019年9月3日 上午9:51:24

  • @version 1.0
    */
    public class ClassDao {

    /**

    • 添加班级
    • @param cla
    • @return
      */
      public int insert(Classes cla){
      int rows = 0;
      Connection con = null;
      PreparedStatement pstm = null;
      try {
      con = JDBCTools.getCon();
      String sql = “insert into ex_class values(null,?,?)”;
      pstm = con.prepareStatement(sql);
      pstm.setString(1, cla.getClassName());
      pstm.setDate(2, cla.getClassDate());
      rows = pstm.executeUpdate();
      } catch (ClassNotFoundException e) {
      e.printStackTrace();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      JDBCTools.Close(con, pstm);
      }
      return rows;
      }

    /**

    • 按ID删除班级
    • @param classID
    • @return
      */
      public int delete(int classID){
      int rows = 0;
      Connection con = null;
      PreparedStatement pstm = null;
      try {
      con = JDBCTools.getCon();
      String sql = “delete from ex_class where class_id=?”;
      pstm = con.prepareStatement(sql);
      pstm.setInt(1, classID);
      rows = pstm.executeUpdate();
      } catch (ClassNotFoundException e) {
      e.printStackTrace();
      } catch (SQLException e) {
      e.printStackTrace();
      } finally {
      JDBCTools.Close(con, pstm);
      }
      return rows;
      }

    /**

    • 修改班级
    • @param cla
    • @return
      */
      public int update(Classes cla){
      int rows = 0;
      Connection con = null;
      PreparedStatement pstm = null;
      try {
      con = JDBCTools.getCon();
      String sql = “update ex_class set class_name=?,class_date=? where class_id=?”;
      pstm = con.prepareStatement(sql);
      pstm.setString(1, cla.getClassName());
      pstm.setDate(2, cla.getClassDate());
      pstm.setInt(3, cla.getClassID());
      rows = pstm.executeUpdate();
      } catch (ClassNotFoundExc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值