《数据库技术》
实践报告
学 校:长沙理工大学继教院兵器助学站点
姓 名:
考籍号 :
指导老师: 周昱佳
《数据库技术》实践报告
一、实习目的:
实习从基本的建立数据库及表对象入手,由浅至深,逐步学习建立其他的数据库对象,实施数据完整性,建立查询、视图、触发器、存储过程。
二、实习内容:
1. Transact-SQL语言的使用
(1) 理解局部变量和全局变量的概念。
全局变量也称为外部变量,它是在函数外部定义的变量。
局部变量指在程序中,只在特定过程或函数中可以访问的变量,是相对与全局变量而言的。 (2) 掌握基本的SELECT语句的使用方法。
选择:select * from table1 where 范围
查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count(*) as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]
2.函数及系统函数的使用
(1) 数学函数的使用。
分别用函数求出-3、2.2的绝对值,16的平方根,5的三次方,-5的负号。
ABS(-3) ABS(2.2) SQRT(16) POWER(5,3) SIGN(-5)
(2) 字符串函数的使用。
1)返回字符串“dcbA”的第一个字符的ASCII码值;ASC(“dcbA”) 100
2)分别将字符串“china”、“MACHINE”转换成大写、小写字母;
UPPER(“china”) CHAINA LOWER(“MACHINE”) machine
3)去掉字符串“ machine ”左边的空格,再与“china”及“press“连接起来;
Stract((stract(“china”,LTRIM(“ machine ”)),”press”)
4)去掉字符串“ machine ”右边的空格,再与“china”及“press“连接起来;
Stract((stract(“china”,TRIMT(“ machine ”)),”press”)
5)去掉字符串“ machine ”左右两边的空格,再与“china”及“press“连接起来;
Stract((stract(“china”,ALLTRIM(“ machine ”)),”press”)
6)从字符串“china machine press”中返回字符串”machine“,并将字符串“machine”逆序返回。
StrReverse(SUBSTR(“china machine press”,”machine”))
7)将字符串“abcdabcd”中的所有字符“a”换为字符“h”。
STUFF(“abcdabcd”,”a”,”h”)
(3) 日期、时间函数的使用。
1)以整数形式返回系统当前日期及当前日期的年份、月份、日期;
NOW( ) YEAR(Now) DAY(Now)
2)返回给定日期“09/18/2005”与当前日期相差的天数。
DATEDIFF(day, pubdate, getdate())
(4) 系统函数的使用。
1)显示正在使用的用户名、数据库名及服务器名;
显示数据库名:SYS_CONTEXT('USERENV','DB_NAME')
显示正在使用的用户名SELECT SUSER_SNAME()
显示服务器名SELECT @@SERVERNAME
2)返回当前主机标识及主机名称。
HOST_ID() HOST_NAME()
3.数据库的创建与管理
(1) 掌握创建数据库的三种方法:使用T-SQL语句、企业管理器或向导。
通过向导创建数据库:
以下图4-1 到图4-8是使用向导创建数据库 ,用户根据提示操作,即可创建数据库。
图4-1 选择向导对话框
图4-2 欢迎使用创建数据库向导对话框
图4-3 输入数据库名称和文件位置对话框
图4-4 定义数据库文件逻辑名称及初始大小对话话框
图4-5 定义数据库增长信息对话框
图4-6 定义事务日志文件名称及初始大小对话框
图4-7 定义事务日志文件增长信息对话框
图4-8 确认创建数据库对话框
通过企业管理器建立数据库
(1)在企业管理器中,单击工具栏中的 图标,或在数据库文件夹或其下属任一数据库图标上单击右键,选择新建数据库选项,就会出现如图4-9所示的对话框。
(2)在常规(General)页框中,要求用户输入数据库名称以及排序规则名称。
(3)点击数据文件(Data Files)页框,该页框用来输入数据库文件的逻辑名称、存储位置、初始容量大小和所属文件组名称,如图4-10所示。
(4)点击事务日志(Transaction Log)页框,该页框用来设置事务日志文件信息,如图4-11所示。
(5)单击图4-11中的“确定”按钮,则开始创建新的数据库。
图4-9 创建数据库对话框中的常规页框
图4-10 创建数据库对话框中的数据文件页框
图4-11 创建数据库对话框中的事务日志页框
使用Transact-SQL语言创建数据库
CREATE DATABASE database_name
[ON [PRIMARY] [<filespec> [,…n] [,<filegroupspec> [,…n]] ]
[LOG ON {<filespec> [,…n]}]
[FOR RESTORE]
<filespec>::=([NAME=logical_file_name,]
FILENAME=‘os_file_name’
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment] ) [,…n]
<filegroupspec>::=FILEGROUP filegroup_name <filespec> [,…n]
(2) 掌握修改数据库的大小、数据库更名、数据库删除的方法。
alter database dataname
modify datafile
这个语句是用来修改数据文件的属性,可以修改大小,可扩展性,数据文件类型等等
修改数据库名
语法:
alter database 数据库
modify name=newname
例:将数据库 “仓库库存管理”改名为“仓库管理”
alter database 仓库库存管理
modify name=仓库管理
EXECUTE sp_helpdb 仓库管理 --查看数据库信息
例题3:在C:\DATA1\文件夹中创建一个名为:
仓库库存管理数据库,要求它有3个数据文件,
其中主数据文件逻辑名为epdata1,大小为10MB,最大大小为50MB,每次增长5MB;
辅助数据文件属于FGroup文件组,文件逻辑名为epdata2,文件大小为20MB,最大大小不受限制,每次增长10%;
事物日志文件eplog,大小为20MB,最大大小为100MB,每次增长10MB。
CREATE DATABASE 仓库库存管理
ON PRIMARY
( NAME = epdata1,
FILENAME = 'C:\DATA1\epdata1.mdf' ,
SIZE = 10MB ,
MAXSIZE = 50MB ,
FILEGROWTH = 5MB ),
FILEGROUP FGroup
( NAME = epdata2,
FILENAME = C:\DATA1\epdata2.ndf ,
SIZE = 20MB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%)
LOG ON
( NAME = eplog,
FILENAME = C:\DATA1\eplog.ldf ,
SIZE = 20MB ,
MAXSIZE = 100MB ,
FILEGROWTH = 10MB )
利用Drop语句删除数据库
Drop语句可以从SQL Server中一次删除一个或多个数据库。其语法如下:
Drop database database_name[,…n]
(3) 掌握查看、设置数据库属性的方法。
查看数据库
1. 在对象资源管理器中,连接到 SQL Server 数据库引擎实例,然后展开该实例。
2. 展开“数据库”,右键单击要查看的数据库,再单击“属性”。
3. 在“数据库属性”对话框中,选择一个页以查看相应的信息。例如,选择“文件”页可以查看数据和日志文件的信息。
设置数据库属性:
在创建数据库以后还可以设置其属性,以更改创建时的某些设置和创建时无法设置的属性。用右键单击所要设置属性的数据库,从快捷菜单中选择选项“属性(Properties)”,就会出现如图6-4 所示的数据库属性设置对话框。
在“General”页框中,可以看到数据库的状态、所有者、创建时间、容量、备份、维护等属性信息。
在“Filegroups” 页框中,如图6-5 所示,可以添加或删除文件组,不过,如果文件组中有文件则不能删除,必须先将文件移出文件组。
在Options 选项页框中,可以设置数据库的许多属性,如图6-6 所示。在图6-6 中选中的选项都是系统默认为True 的。
各选项选中时的含义如下:
Restrict access
访问控制. Member of db_owner;dbcreator,or sysadmin
只有数据库所有者、数据库创建者和系统管理员才有权使用数据库。 Single user
数据库在同一时间只能供一个用户使用. Read only
数据库只读,即可查看而不可修改。 ANSI Null default
允许在数据库的列中输入NULL值. Recursive triggers
允许触发器递归调用。SQL Server 设定的触发器递归调用的层数上限为32。 Select into / bulk copy
允许使用SELECT INTO 或BCP、 WRITETEXT、 UPDATETEXT 命令向表中大量插入数据。用上述命令插入数据,在事务日志中不会有记录。在开发数据库时时常将此选项设置为True。 Truncate log on checkpoint
当执行CHECKPOINT 命令时,如果事务日志文件超过其大小的70%, 则将其内容清除。在开发数据库时时常将此选项设置为True。 Torn page detection
自动检测有损坏的页(Torn Page)。页(Page)是数据库内容的基本存储单位。每个页的大小为8KB。 由于SQL Server 对页的读写单位是大小为512 字节的扇区(Sector),当每个页的第一个扇区被成功写入后,SQL Server 就认为此页已经被成功写入了。因此,如果写完第一个扇区后发生突发事件,导致写入中,断就会产生有损坏的页。需要通过备份来恢复数据库。 Auto close
当数据库中无用户时,自动关闭此数据库,并将所占用资源交还给操作系统。对那些不间断使用的数据库不要使用此选项,否则会额外增加开关数据库的运行开销,得不偿失。 Auto shrink
定期对数据库进行检查,当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 。当文件大小没有超过其建立时的初始大小时,不会缩减文件。缩减后的文件也必须大于或等于其初始大小。对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。 Auto create statistics
启动数据库列的使用统计,以提供给查询优化器(Query Optimizer) 使用。 Auto update statistics
当数据库表更新时,更新所有的统计。 Use quoted identifiers
标识符必须用双引号扩起来,且可以不遵循Transact-SQL 命名标准。 Compatibility Level
数据库兼容性级别。可以指定与何种版本以前的数据库兼容。 其它数据库选项
还有一些数据库选项没有被显示出来,如:ANSI warning、 merge publish、 offline、 published、 subscribed 等,这些选项在一般情况下最好由SQL Server 自己来控制它,实在需要更改时可以通过Sp_dboption 系统存储过程来实现。系统存储过程Sp_dboption 用于显示或更改数据库选项。但它不能在系统数据库master 或tempdb 数据库中使用。其语法如下:
sp_dboption [[@dbname =] 'database_name']
[, [@optname =] 'option_name']
[, [@optvalue =] 'value']
各参数说明如下: [@dbname =] 'database'
指定所要操作的数据库名. [@optname =] 'option_name'
指定要显示或修改的数据库选项。可以不输入选项的全名。如果省略此项,就会列出所有设定为True 的选项。 [@optvalue =] 'value'
指定选项的值“value” 的值可以为True、 False 或On、Off。
三、实习场地:学校科技楼机房
四、实习时间:20 年 月 日至 20 年 月 日
五、考核形式:实践过程考核
六、参考文献
《数据库及其应用》 牛允鹏 主编,经济科学出版社,2005版
七、实践收获
第二篇:网络数据库开发技术课程实践报告
《网络数据库开发技术》
课程设计报告
题目: 网络购书系统 班级: 计算0901 学号: 姓名: 成绩:日期: 2012/12/18
济南大学数学科学学院
一、 课程设计目的
JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Java class、Servlet、Applets和Web Server,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起。
在JSP第一次获得来自于客户端浏览器的请求时,JSP文件将被JSP引擎(JSP engine)转换成一个Servlet,即将”.jsp”文件编译成Java Class文件。当Servlet引擎接收到请求后,如果设置了使用最新的JSP,它就会去找JSP文件,检查该文件在上次编译后是否改动过。如果改动过,就会重新编译生成新的Servlet,最终将请求转交给编译好的Servlet引擎执行。
二、 课程设计任务与要求
1. 课程设计任务
1)、客户界面部分
新闻流。
图书选购首页。
购物车功能。
查找图书。
用户登录。
查看用户的订单信息。
在线聊天。
2)、管理界面部分
现有图书管理:修改,删除,查看。
用户管理:查看,修改,删除。
订单管理:查看订单清单,更新订单付款,出货状态,删除订单。
留言管理。
2. 课程设计要求
1、 利用JSP做一个项目设计
2、 有多个模块支撑
3、 创建数据库
4、 要求利用JSP和其他知识进行设计。
5、 包含购物、留言、用户登录、新闻、聊天等功能
三、 课程设计详细过程
1. 设计中用到的各个模块及其功能
本系统采用三层架构设计,它的工作原理如图所示。
采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。
针对一般在线书店的需求,得出如下需求信息。
?
?
?
?
? 用户分为游客和已注册用户。 订单分为单张详细订单和总订单。 一个用户可以购买多本图书。 一个用户对应一张订单。 一个列表对应多张订单。
针对本系统功能分析,总结出如下的需求信息。
?
?
?
? 用户,包括数据项:用户ID、用户名、密码。 图书,包括数据项:图书编号、图书名、价格、图书介绍。 订单列表,包括数据项:订单编号、图书编号、购书数量。 订单,包括数据项:订单编号、用户编号、下单时间。
从本系统中规划出的实体有:用户实体、图书实体、订单实体、订单列表实体。
2. 核心模块的实现代码
(一)实现bookshop.run包
1、login.java
这是一个以客户为中心的交易平台,只有成为了系统的合法用户才能够使用这个系统,因此需要检验每个用户的合法性,管理用户登录的login.java正是要完成这样的功能。
类中定义了个private属性和他们对应的setX()/getX()方法和默认构造函数和execute() getSql() 操作。
重要操作:主要介绍execute()
execute()操作
功能:从数据库中查询用户信息。
返回值:boolean型,如果取值成功返回true,否则,返回false。
设计思路:获得数据库连接对象Connection 对象,ResultSet对象
和Statement对象 ――》调用getSql()方法获得sql语句――》
执行sql语句。
程序主干部分代码:
public boolean execute() throws Exception {
………
try{ con=DataBase.getConnection();
stmt=con.createStatement();
rs = stmt.executeQuery(getSql());
}catch(Exception e){
e.printStackTrace(); }
while (rs.next()){
if (!isadmin)
{userid = rs.getLong("id"); }
flag = true;
}
………}
2、op_book.java
该类主要负责图书的管理,包括图书的修改,查询,删除和添加等。
重要操作:主要介绍getRequest()方法
功能:负责从页面接受表单数据并分解,设置abooks对象相应属性。 参数设计:页面传递的Request对象,其中包括表单数据。
返回值:boolean型,true表示成功,否则返回false。
设计思想:获取页面传递的Request对象—》分解Request对象—》获取表单参数值—》把参数值设置成图书对象abooks相对应的属性值。
程序主干代码:
public boolean getRequest(javax.servlet.http.HttpServletRequest newrequest) { ……… request = newrequest;
String BookName = request.getParameter("BookName");
abooks.setBookName(to_String(BookName));
String author = request.getParameter("author");
abooks.setAuthor(to_String(author));
String publish = request.getParameter("publish");;
abooks.setPublish(to_String(publish));
String bookclass = request.getParameter("bookclass");
abooks.setBookClass(bc);
String bookno = request.getParameter("bookno");
abooks.setBookNo(to_String(bookno));
String picture = request.getParameter("picture");
abooks.setPicture(to_String(picture));
price =new Float(request.getParameter("price")).floatValue();
abooks.setPrice(price);
amount = new Integer(request.getParameter("amount")).intValue();
abooks.setAmount(amount);
String Content = request.getParameter("Content");
abooks.setContent(to_String(Content));
……..
}
3、op_user.java:
为了使用上的方便,我们把对用户的管理,包括用户的添加,删除,修改,
查询等集合成一个管理类。
该类具有的主要方法(省去了属性相关的getX()/setX()操作):
负责用户的添加;负责删除指定ID的用户;取出书店所有用户的信息;返回指定字符串的GBK编码;负责取得用户的详细信息;负责修改用户资料;获取表单数据,并分解存储。
4:op_buy.java
我们把业务逻辑和对订单以及和订单列表的管理集成到了该类当中。 该类的主要操作(省去了属性相关的getX()/setX()操作)
负责向购物车中添加新购买的图书;负责从数据库中删除指定ID的订单;负责修改购物车中已选的图书;负责删除购物车中的物品;负责从数据库中的订单列表中查询指定用户的订单列表;获得指定字符串的GBK编码;获得单个订单对象;提交购物车,把订单插入到数据库中;该方法负责当用户付款后,把数据中对应订单的是否付款标记修改成已付状态。
重要操作:主要介绍addnew()方法:
功能:负责向购物车中添加一条新记录。
参数设计:页面传递的request对象。
返回值:boolean类型,成功返回true,否则返回false。
设计思路:从页面获得表单数据(request对象中)---》获得图书编号等参数值—》判断购买数量是否合法—》如果是可以操作,否则不能操作—》判断是否第一次购买—》如果是第一次购买,按第一次购买操作—》否则查询购买列表,找是否有相应项,有则直接修改数量—》否则添加新记录。
(二) 客户界面设计与实现
1、界面头和界面尾设计
为了提高代码的重用性,我把客户界面部分相同的头和尾作成两个独立的块,效果如下图:
2、用户登录
1.用户登录界面login.jsp代码如下:
function ChickSubmit(){
if( document.loginform.userid.value=="")
{alert("请输入用户名!"); document.loginform.userid.focus();return false;} {alert("请输入密码!"); document.loginform.password.focus();return false;} {alert("用户名不能包含单引号、空格等字符!"); document.loginform.userid.focus(); return false;} if(document.loginform.password.value=="") if(document.loginform.userid.value.indexOf("")!=-1)
return true;}</SCRIPT>
<%@ page import="java.util.*,java.sql.*"%">
3、在线购书功能模块设计
在该模块用户可以看见书店现有的样子,用户可以查找书通过分类,关键字查找。
户可以购买图书,页可以查看图书的详细资料,还可以跳转到其他的模块,例如查看
购物车,查看订单信息等。
1.图书检索页面模块search.jsp代码如下:
<%@ page contentType="text/html;charset=GB2312"%>
<!--
op=request.getParameter("op");
if(op!=null&&op.equals("rsearch")){
String s_BookName=request.getParameter("bookname");
String s_Author=request.getParameter("author");
String s_Publisher=request.getParameter("publisher");
String s_where="";
if(!s_BookName.equals(""))
s_where+="and bookname like'%"+s_BookName+"%'";
if(!s_Author.equals(""))
s_where+="and author like'%"+s_Author+"%'";
if(!s_Publisher.equals(""))
s_where+="and name like'%"+s_Publisher+"%'";
session.setAttribute("s_where",s_where);
response.sendRedirect("booklist.jsp");
}
%>
4、购物车模块设计
在购物车这个模块当中用户可以修改购买数量,可以删除已选图书,可以提交购物车,也可以清空购物车,同时也可以继续购书。在这个模块中我们用到了bookshop.run.op_book,bookshop.run.op_bookclass,bookshop.run.op_buy三个JavaBean.关于他们的介绍在前面已经罗列出来了这里就不在一一说明了。 a.放入购物车页面核心代码如下addtocart.jsp:
5、读者留言功能模块设计
读者留言leaveword.jsp代码:
function CheckSubmit() {
if(document.form.subject.value=="")
{
{ alert("请输入主题!");document.form.subject.focus();return false;} alert("请输入主题!");document.form.context.focus();return false;} if(document.form.context.value=="")
<% rs=stmt.executeQuery("select*from notes order by id desc");
if(i_currentpage>i_totalpage)
i_currentpage=i_totalpage;
int i_position=(i_currentpage-1)*pagenum;
if(i_position==0)
rs.beforeFirst();
else
rs.absolute(i_position);
for(int i=0;i<i_pagenum;i++){
if(!rs.isLast()){
rs.next();
s_createid=(rs.getString("userid")!=null?rs.getString("userid"):"");
s_subject=(rs.getString("subject")!=null?rs.getString("subject"):"");
s_datel=(rs.getString("datel")!=null?rs.getString("datel").substring(0,10):"");
s_context=(rs.getString("context")!=null?rs.getString("context"):"");
s_employeeid=(rs.getString("employeeid")!=null?rs.getString("employeeid"):"");
s_date2=(rs.getString("date2")!=null?rs.getString("date2").substring(0,10):"");
6、管理员身份验证功能模块设计
a管理员身份验证bookshop/admin/index.jsp代码:
3. 设计的最终运行结果截图
1、登陆首页
2、购物车
3、在线聊天
四、 课程设计心得体会
在软件开发编码阶段我才用原型法,先设计出个一个实现简单功能的系统在更具需求一步步完善系统的功能。由于是才采用面向对象的设计所以系统中由很多类和方法,我将他们归类将经常使用的方法放在单独的类文件中,在以后的编码中只要通过对名称空间的引用就能调用他们。本系统在实现传统的网上书店功能基础上对增强系统的安全性进行了初步的尝试,但是由于这方面研究的不深所以实现的与需求还有一定的差距。
在设计和制作网上书店这一个整体项目的过程中,也培养了自己的综合能力和从全局考虑的思想。将复杂的问题简单化,作为电子商务应用的一个缩影,我所涉及的模块项目完成了其后台具有的基本功能,使自己对于电子商务的了解更加深入和明了。
当然,其中也遗留下了一些待解决的问题,但出于自己水平有限,作为一个网上书店系统,该项目上有一些不完善和函待改进之处,特别是在网站信息的安全性上需要进一步加强。
姓名:吴茂永
联系方式:182xxxxxxxx