数据库考试机试题
- 所有的数据库操作都使用sql并保存为exam.sql文件.
- 交卷时,将sql文件放入到自己名字的文件夹,与Java代码一起交上来.
- 必须按照MVC模式建包.测试类写在view包下.
按要求完成如下题目:
- 创建数据库exam_db,并创建一个表ex_class,请写出sql. 5分
班级ID 数字 主键,自动增长
班级名称 字符100
开班日期 日期
创建一个表ex_student,请写出sql. 5分
学生ID 数字 主键,自动增长100开始
学生名字 字符100
学生java成绩 数字
学生年龄 数字
学生性别 字符
所在班级 数字 外键 - 使用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