Java数据库编程测试题
一、下面是《学员操评系统》的数据库的基本表的设计:
表1:学员基本信息
字段 | 类型 | 长度 | 是否空 | 约束说明 |
学号 | char | 13 | 否 | 主键 |
姓名 | varchar | 8 | 否 |
|
性别 | char | 2 |
|
|
学历 | char | 4 |
| 默认值 ‘高中’ ,学历只能是’高中’,’大专’,’本科’ |
家庭住址 | varchar | 50 |
|
|
表2:学员科目成绩
字段 | 类型 | 长度 | 是否空 | 约束说明 |
编号 | int |
| 否 | 主键(标识列) |
学号 | char | 13 | 否 | 外键(学员基本信息) |
计算机基础分 | decimal | 4,2 |
| 默认值为0,0<=分数值<=100 |
C语言分 | decimal | 4,2 |
| 默认值为0,0<=分数值<=100 |
JAVA语言分 | decimal | 4,2 |
| 默认值为0,0<=分数值<=100 |
SQL语言分 | decimal | 4,2 |
| 默认值为0,0<=分数值<=100 |
JSP分 | decimal | 4,2 |
| 默认值为0,0<=分数值<=100 |
项目分 | decimal | 4,2 |
| 默认值为0,0<=分数值<=100 |
二、实现功能
1、数据库部分:将所有SQL语句保存为文件,文件命名方式为:学员操评系统_姓名.sql
Ø 建立数据库、建立上述表;(10分)
Ø 建立各表之间关联关系,并保证数据的一致性、完整性;(10分)
Ø 数据的录入(每表数据不少于5条)(10分)
2、JAVA部分:利用JDBC完成下面操作,项目名为:StudentManager
Ø JDBC数据库的正确连接;(10分)
Ø 方法insertRow():利用JDBC向学员基本信息表插入1条数据;(20分)
Ø 方法retrieveRow():利用JDBC打印学员科目成绩表的所有信息;(30分)
Ø 在main方法中调用上述2方法;(10分)
答案:
--创建学员基本信息表
create table stuInfo(
sno char(13) primary key,
sname varchar(8) not null,
sex char(2),
degree char(4) default '高中' check(degree in('高中','本科','大专')),
addr varchar(50)
);
--创建学员科目成绩表
create table score(
id int primary key,
sno char(13) not null,
basic_score decimal(4,2) default 0 check(basic_score between 0 and 100),
c_score decimal(4,2) default 0 check(c_score between 0 and 100),
java_score decimal(4,2) default 0 check(java_score between 0 and 100),
sql_score decimal(4,2) default 0 check(sql_score between 0 and 100),
jsp_score decimal(4,2) default 0 check(jsp_score between 0 and 100),
proj_score decimal(4,2) default 0 check(proj_score between 0 and 100),
constraint fk_sno foreign key(sno) references stuInfo(sno)
);
--向学员基本信息表插入数据
insert into stuInfo VALUES('linklinclass1','lk','男','高中','深圳');
insert into stuInfo VALUES('linklinclass2','jl','男','大专','深圳');
insert into stuInfo VALUES('linklinclass3','pk','女','高中','上海');
insert into stuInfo VALUES('linklinclass4','wk','男','本科','深圳');
insert into stuInfo VALUES('linklinclass5','fs','女','高中','北京');
--向学员科目成绩表插入数据
insert into score values(1,'linklinclass1',40.5,57.8,65.8,21.4,45.4,31.9);
insert into score values(2,'linklinclass1',50.5,35.5,65.8,36.4,34.4,12.9);
insert into score values(3,'linklinclass2',58.6,50,65.8,21.4,45.4,31.9);
insert into score values(4,'linklinclass2',40.3,69.8,65.8,21.4,45.4,54.9);
insert into score values(5,'linklinclass2',78.5,82.8,25.8,98.4,98.4,34.9);
--查询数据
select * from stuInfo;
select * from score;
delete stuInfo where sno='linklinclass6'
jdbc.properties配置文件信息:
driver=oracle.jdbc.driver.OracleDriver
url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl
username=scott
userpwd=123
package test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class JDBCMain {
static Connection conn=null;
static PreparedStatement pre=null;
static ResultSet rs=null;
public static void main(String[] args) {
Properties pro=new Properties();
try {
//1.加载数据库配置文件
pro.load(new FileInputStream("jdbc.properties"));
String driver=pro.getProperty("driver");
String url=pro.getProperty("url");
String user=pro.getProperty("username");
String password=pro.getProperty("userpwd");
//2.加载数据库驱动
Class.forName(driver);
//3.获取数据库连接
conn=DriverManager.getConnection(url, user, password);
//4.编写sql语句
String sql_insert="insert into stuInfo values(?,?,?,?,?)";
String sql_select="select * from score";
insertRow(sql_insert,"linklinclass6","py","男","本科","湖南");
retrieveRow(sql_select);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭资源
try {
if(rs!=null){
rs.close();
}
if(pre!=null){
pre.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 打印查询结果
* @param sqlSelect
*/
private static void retrieveRow(String sql) {
try {
pre=conn.prepareStatement(sql);
rs=pre.executeQuery();
while(rs.next()){
System.out.printf("编号:%d 学号:%4s 计算机基础分:%.2f C语言分:%.2f JAVA语言分:%.2f SQL语言分:%.2f JSP分:%.2f 项目分:%.2f\n",
rs.getInt("id"),rs.getString("sno"),rs.getDouble("basic_score"),rs.getDouble("c_score")
,rs.getDouble("java_score"),rs.getDouble("sql_score"),rs.getDouble("jsp_score")
,rs.getDouble("proj_score"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void insertRow(String sql,Object ...objects) {
try {
pre=conn.prepareStatement(sql);
for(int i=0;i<objects.length;i++){
pre.setObject(i+1, objects[i]);
}
pre.executeUpdate();
System.out.println("插入数据成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}