数据库综合性实验.docx
《数据库综合性实验.docx》由会员分享,可在线阅读,更多相关《数据库综合性实验.docx(22页珍藏版)》请在冰豆网上搜索。
![数据库综合性实验.docx](https://file1.bdocx.com/fileroot1/2023-4/16/63f7c78e-e3e6-4898-ac08-f9b8fc0cffc9/63f7c78e-e3e6-4898-ac08-f9b8fc0cffc91.gif)
数据库综合性实验
本科生综合性实验报告
学院:
信息工程学院
课程名称:
JSP网页设计—学生信息管理系统
专业班级:
08级计算机学与技术系软件工程
实验小组:
5北226
组长姓名:
组员:
2010年12月
实验报告须知
1、学生上交实验报告时,必须为打印稿(A4纸)。
页面空间不够,可以顺延。
2、学生应该填写的内容包括:
封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。
3、教师应该填写的内容包括:
实验成绩、教师评价等。
4、教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。
综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。
任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。
5、未尽事宜,请参考该课程的实验指导书。
《数据库原理》课程综合性实验报告
开课实验室:
计算机基础实验中心B207机房2010年12月
实验题目
使用JSP开发动态网站连接数据库的综合实例
一、实验目的
1.熟练使用JSP进行网页设计;
2.熟练使用数据库软件Oracle,掌握数据源的连接方法;
3.实现学生档案的查询、插入、删除等功能。
二、设备与环境
硬件:
PC兼容机;
软件:
Windows操作系统、MyEclipse、Oracle9i、Dreamweaver、Tomcat
三、实验原理
JDBC连接数据库
----JDBC(JavaDataBaseConnectivity)是Java和数据库的接口规范,JDBC定义了一个支持标准SQL功能的通用低层的应用程式编程接口(API),他由Java语言编写的类和接口组成,旨在让各数据库研发商为Java程式员提供标准的数据库API。
JDBCAPI定义了若干Java中的类,表示数据库连接、SQL指令、结果集、数据库元数据等。
他允许Java程式员发送SQL指令并处理结果。
通过驱动程式管理器,JDBCAPI可利用不同的驱动程式连接不同的数据库系统。
----JDBC和ODBC都是基于X/Open的SQL调用级接口,JDBC的设计在思想上沿袭了ODBC,同时在其主要抽象和SQLCLI实现上也沿袭了ODBC,这使得JDBC容易被接受。
JDBC的总体结构类似于ODBC,也有四个组件:
应用程式、驱动程式管理器、驱动程式和数据源。
----JDBC保持了ODBC的基本特性,也独立于特定数据库。
使用相同原始码的应用程式通过动态加载不同的JDBC驱动程式,能访问不同的DBMS。
连接不同的DBMS时,各个DBMS之间仅通过不同的URL进行标识。
JDBC的DatabaseMetaData接口提供了一系列方法,能检查DBMS对特定特性的支持,并相应确定有什么特性,从而能对特定数据库的特性予以支持。
和ODBC相同,JDBC也支持在应用程式中同时建立多个数据库连接,采用JDBC能非常容易地用SQL语句同时访问多个异构的数据库,为异构的数据库之间的互操作奠定基础。
----不过,JDBC除了具有ODBC的上述特点外,更具有对硬件平台、操作系统异构性的支持。
这主要是因为ODBC使用的是C语言,而JDBC使用的是Java语言。
Java语言具有和平台无关、移植性强、安全性高、稳定性好、分布式、面向对象等众多好处,而JDBC确保了“100%纯Java”的解决方案,利用Java的平台无关性,JDBC应用程式能自然地实现跨平台特性,因而更适合于Internet上异构环境的数据库应用。
----此外,JDBC驱动程式管理器是内置的,驱动程式本身也可通过Web浏览器自动下载,
无须安装、设置;而ODBC驱动程式管理器和ODBC驱动程式必须在每台客户机上分别安装、设置。
---JSP是一种基于JavaServlet的Web研发技术,他和ASP非常相似,但又有差别:
在JSP下,嵌入HTML页面的程式代码是Java代码;页面中嵌入的程式代码被编译成Servlet(这种编译操作仅在对JSP页面的第一次请求时发生)并由Java虚拟机执行。
这里Java代码能通过JDBC访问多个异构的数据库,其平台无关性特别好。
当前,Internet上的数据库应用已越来越多,JDBC和ODBC必将在Internet上的异构数据库访问中发挥重要的作用。
四、实验步骤
Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动
ConnectionconDB=DriverManager.getConnection
("jdbc:
oracle:
thin:
@10.1.1.41:
1521:
DAT1","astro","123698");
//建立连接
Statementst=conDB.createStatement();//新建对象结果集
ResultSetrt=st.executeQuery("select*fromsys.STUDENT");
//返回结果集
程序开发环境MyEclipse
五、实验内容
1.实验背景分析
本系统利用JDBC-ODBC连接数据库的功能,实现对数据库信息的管理。
2.系统功能设计
查询信息模块,添加信息模块,删除信息模块;
3.根据系统功能作数据库表设计
数据库:
DAT1
学生信息表(student):
字段名
类型
长度
sname
char
10
sno
number
10
ssex
char
10
ssage
number
10
sdept
char
10
4.系统运行界面
查询信息界面:
添加信息界面:
5.代码设计
在web工程中的src目录下com包中包含两个JAVA文件
DBUtil.java
代码如下:
/**
*
*/
packagecom;
/**
*@authorwenmingrui
*
*/
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;
publicclassDBUtil{
publicstaticConnectiongetConnection(){
ConnectionconDB=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conDB=DriverManager.getConnection("jdbc:
oracle:
thin:
@localhost:
1521:
DAT1","astro","123698");
//System.out.println(conDB);
}catch(Exceptione){
System.out.println(e);
}
returnconDB;
}
publicListgetQuery()throwsException{
ConnectionconDB=getConnection();
Statementst=conDB.createStatement();
ResultSetrs=st.executeQuery("select*fromSTUDENT");
try{
Listlist=newArrayList();
while(rs.next()){
Studentstu=newStudent();
stu.setSname(rs.getString("sname"));
stu.setSno(rs.getString("sno"));
stu.setSsex(rs.getString("ssex"));
stu.setSsage(rs.getString("ssage"));
stu.setSdept(rs.getString("sdept"));
//list.add(rs.getString("sname"));
//list.add(rs.getString("sno"));
//list.add(rs.getString("ssage"));
//list.add(rs.getString("sdept"));
list.add(stu);
}
returnlist;
}catch(Exceptione){
throwe;
}finally{
if(rs!
=null)rs.close();
if(st!
=null)st.close();
if(conDB!
=null)conDB.close();
}
}
publicvoiddelete(intno)throwsException{
ConnectionconDB=getConnection();
Statementst=conDB.createStatement();
st.executeQuery("deletefromstudentwheresno='"+no+"'");
st.close();
conDB.close();
}
publicvoidinsert(Stringname,intsno,Stringsex,intage,Stringdept)
{
ConnectionconDB=getConnection();
Statementst=null;
try{
st=conDB.createStatement();
st.executeQuery("insertintostudent(sname,sno,ssex,ssage,sdept)values('"+name+"',"+sno+",'"+sex+"',"+age+",'"+dept+"')");
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
try{
st.close();
conDB.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
/****测试数据库连接**********************
testConnection();//
/****测试数据库查询**********************/
try{
Listl=newDBUtil().getQuery();
for(Studentstu:
l)
System.out.println(stu.getSname());
//DBUtildbUtil=newDBUtil();
//dbUtil.insert("温明睿",2008100838,"男",20,"软件工程");
//for(Studentstu:
l)
//System.out.println(stu.getSname());
}catch(Exceptione){
e.printStackTrace();
}
/**************************/
}
}
此代码包含所有实现的功能,添加、插入、查询等。
Student.java
代码如下:
/**
*
*/
packagecom;
/**
*@authorwenmingrui
*
*/
publicclassStudent{
privateStringsname,sno,ssex,ssage,sdept;
publicStringgetSname(){
returnsname;
}
publicvoidsetSname(Stringsname){
this.sname=sname;
}
publicStringgetSno(){
returnsno;
}
publicvoidsetSno(Stringsno){
this.sno=sno;
}
publicStringgetSsex(){
returnssex;
}
publicvoidsetSsex(Stringssex){
this.ssex=ssex;
}
publicStringgetSsage(){
returnssage;
}
publicvoidsetSsage(Stringssage){
this.ssage=ssage;
}
publicStringgetSdept(){
returnsdept;
}
publicvoidsetSdept(Stringsdept){
this.sdept=sdept;
}
}
此类的功能是临时保存学生的信息。
Web根目录下包涵8个文件以及一个图片文件,分别是delete_success.jsp,delete.jsp,delete2.jsp,error.jsp,insert.jsp,insert2.jsp,login.html,select.jsp
login.html代码如下:
studentinformationsystem
08计算机科学与技术学生信息管理系统
select.jsp代码如下:
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.util.List,com.DBUtil,com.Student"errorPage="error.jsp"%>
学生信息查询
学生信息查询
姓名
学号 | 性别 | 年龄 | 专业 |
<%DBUtilutil=newDBUtil();
Listlist=util.getQuery();
for(Studentstu:
list){
%>
<%=stu.getSname()%>
<%=stu.getSno()%> | <%=stu.getSsex()%> | <%=stu.getSsage()%> | <%=stu.getSdept()%> | <%}%>
//localhost:
8086/web2/login.html">返回主页
insert.jsp代码如下:
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.util.List,com.DBUtil,com.Student"errorPage="error.jsp"%>
<%@pageimport="java.sql.*"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
增加记录
姓名:
学号:
性别:
男
女
年龄:
专业:
insert2.jsp代码如下:
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.util.List,com.DBUtil,com.Student"errorPage="error.jsp"%>
<%@pageimport="java.sql.*"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
Inserttitlehere<%
Stringname=request.getParameter("name");
Stringchangeno=request.getParameter("sno");
intno=Integer.parseInt(changeno);
Stringsex=request.getParameter("sex");
Stringchangeage=request.getParameter("age");
intage=Integer.parseInt(changeage);
Stringdept=request.getParameter("dept");
DBUtildbUtil=newDBUtil();
dbUtil.insert(name,no,sex,age,dept);
%>
<%=name%>
<