实训5数据库连接.docx
- 文档编号:693008
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:13
- 大小:239.97KB
实训5数据库连接.docx
《实训5数据库连接.docx》由会员分享,可在线阅读,更多相关《实训5数据库连接.docx(13页珍藏版)》请在冰点文库上搜索。
实训5数据库连接
实训5:
数据库连接
一、实训目的
1、熟悉数据连接对象(ConnectionObject)、数据集对象(RecordSetObject)、命令对象(CommandObject)的使用。
2、会运用T-SQL语句进行数据操作。
3、了解网页编程的基本知识。
二、实训工具及设备
1、实训软件:
SQLServer。
2、实训设备:
安装Windows系统计算机一台。
三、实训预备知识
1、《web开发技术——ASP》
第三章客户端脚本编程
第六章ADO数据库访问
2、登录验证界面的设计与实现
用户登录主要由文件:
Login.asp和CheckUser.asp构成,涉及实训2中的选课系统(ElectiveSystem)数据库中的表:
userInfo。
我们的设计思想是最大限度的将界面设计和实现代码分离,使系统便于维护和管理。
登录界面Login.asp主要用于接收用户的输入信息,而把验证用户的代码放到CheckUser.asp中。
(1)界面设计
用户登录界面设计如图5-1所示。
文件名是Login.asp,它包含一个表单来存放用户登录信息。
图5-1:
登录界面
(2)登录程序流程图
登录程序流程图如图5-2所示。
图5-2:
登录程序流程图
(3)代码实现
在判断用户名、密码是否为空时,调用Login.asp中的JavaScript函数。
代码如下所示。
代码清单5-1:
Login.asp
……
--
functioncheckSpace(checkStr){//判断checkStr是否为空格或空
varstr='';
for(i=0;i str=str+'';//添加空格 } return(str==checkStr);//如果checkStr为空格或空,返回true } functioncheck(){ if(checkSpace(document.userNameInfo.userName.value)){//如果表单中的名字为空格或空 document.userNameInfo.userName.focus(); alert("用户名不能为空或空格! "); returnfalse; } if(checkSpace(document.userNameInfo.userPwd.value)){//如果表单中的密码为空格或空 document.userNameInfo.userPwd.focus(); alert("密码不能为空或空格"); returnfalse; } retuenture; } //--> …… …… …… …… 当用户单击“登录”按钮时,调用check函数,如果check函数返回true,提交数据并刷新页面;否则不提交数据也不刷新页面。 check函数返回true时,将提交表单数据到CheckUser.asp,并进行数据库访问,验证用户是否存在。 在Web应用程序中,数据库访问通常只能由服务器程序来完成,无论采用哪种编程语言,在以数据库驱动的程序设计中,数据库访问程序都有一个比较固定的结构。 连接数据库是数据库访问程序的第一个步骤。 打开SQLServer2000数据库的语句为: str=“Provider=SQLOLEDB;Server=local;UID=username;PWD=password;Database=dbName” conn.Openstr 因为所有的页面操作都要连接数据库,因此,为了方便修改与维护,提高代码的重用,将其编写为一个公用函数OpenDatabase(返回其创建的数据库连接),保存在Conn.asp中。 以后要连接数据库,只需在页面引用即可,引用格式如下: --#includefile="conn.asp"--> Conn.asp的代码如下所示。 代码清单5-2: Conn.asp DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> <% functionOpenDatabase() dimconn,connStr setconn=Server.CreateObject("ADODB.Connection") connStr="Provider=SQLOLEDB;Server=(local);Database=ElectiveSystem; UID=hycollege;PWD=888888;" conn.OpenconnStr setOpenDatabase=conn//函数指向数据库连接 endfunction %> 一旦与数据库建立了连接,下一步就是向数据库发送特定的SQL语句以完成某个特定的操作。 本实训登录程序中的SQL语句是动态生成的,涉及对表userInfo的查询操作,其参数来自表单中的用户名和密码。 接收用户在表单中提交的数据用Request对象完成,如: admin=trim(request("userName"))//获得用户名 password=trim(request("userPwd"))//获得密码 其中trim函数的作用是去掉字符串前后的空格。 构造的SQL语句如下: strSql="select*fromuserInfowhereuserName='"&admin&"'anduserPassword='" &password&"'" 登录程序中,由于要执行查询操作(查询userInfo表是否存在用户),所以,首先要创建记录对象rs,再用rs的Open方法创建记录集,其格式如下: setrs=Server.CreateObject("adodb.recordset") rs.OpenstrSql,cn,1,1 然后判断rs是否为空,如果不为空,表示用户存在,将用户名与用户权限分别存入session变量中,以便用户在进入主页后,根据不同的权限使用不同的功能。 关于session的作用,请参看教材《web开发技术——ASP》。 最后,关闭记录集和数据库连接对象,其格式如下: rs.close;setrs=nothing//关闭记录集 cn.close;setcn=nothing//关闭数据库连接 代码清单5-3: Checkuser.asp …… setcn=OpenDatabase()//获得数据库连接对象 setrs=Server.CreateObject("adodb.recordset")//创建记录集对象 strSql="select*fromuserInfowhereuserName='"&admin&"'anduserPassword='"&password&"'" rs.OpenstrSql,cn,1,1//打开记录集对象 ifnot(rs.bofandrs.eof)then//如果记录集对象不为空(用户存在) …… response.redirect"Index.asp"//进入主页面 else//如果用户不存在,提示错误信息,并返回登录界面 response.write" response.write"alert('对不起,用户不存在! ');history.go(-1);" response.write"" endif %> 注意: 在连接数据库并访问数据库中的表之前,必须创建登录账号、数据库用户和为数据库用户授予权限。 3、主界面功能设计与实现 主界面主要由文件: Index.asp、MainMenu.htm和Temp.htm构成。 主要设计思想采用了框架技术,把整个页面分成左右两个部分,左框架left中的静态页面MainMenu.htm主要用于显示选课系统的功能菜单,分别连接到4个子系统。 而右框架right中的静态页面Welcome.htm用于启动程序时显示一个欢迎界面。 (1)界面设计 主界面设计如图5-3所示。 图5-3: 系统主界面 (2)代码实现 具体的代码实现请查看教师提供的源代码。 4、学生信息维护界面的功能设计与实现 基本信息维护模块主要包括学生信息维护、课程信息维护]系部信息维护功能。 在本实训中,我们仅讲解学生信息维护功能,它集数据录入、查询、删除、修改、分页显示于一体。 其他功能由学生补充完成。 学生基本信息维护主要由文件: StudentInfo.asp、EditStudent.asp、SaveStudent.asp构成,StudentInfo.asp负责接收用户输入的数据、查询及数据显示;EditStudent.asp负责学生信息的修改;SaveStudent.asp负责学生信息的保存、更新、删除。 (1)初始界面设计 在以数据库为中心的程序设计中,界面设计主要考虑需要把哪些信息送入数据库的一个或多个表中,或从数据库的一个或多个表中取出信息。 在本实训中的学生信息维护界面如图5-4所示。 图5-4: 学生信息维护界面 (2)填充系部信息下拉框。 系部信息通过下拉框的方式选择,当学生维护页面显示时,系部下拉框就已经填充好各个系部的名称以供用户选择。 在前增加填充系部信息下拉框的代码并修改系部信息下拉菜单代码,源代码如下。 代码清单5-4: 填充系部下拉框信息 …… --#includefile="Conn.asp"--> <% dimconn,rs,strSql setrs=Server.CreateObject("ADODB.Recordset") strSql="select*fromdeptInfo" setconn=OpenDatabase setrs=conn.Execute(strSql) %> …… <%dowhilenotrs.eof%> <%=rs("deptName")%> <% rs.MoveNext loop rs.Close setrs=nothing %> …… (3)添加新增记录代码 在前添加如下代码。 代码清单5-5: 添加学生信息代码 …… ifrequest.form("txtStuNo")<>""then sNo=request.form("txtStuNo") sName=request.form("txtStuName") sSex=request.form("selectSex") sBirthday=request.form("txtBirthday") sDeptNo=request.form("selectDept") strSql="insertintostudentInfo(stuNo,stuName,sex,birthday,deptNo)"&"values('"&sNO&"','"&sName&"','"&sSex&"','"&sBirthday&"','"&sDeptNo&"')" onerrorresumenext conn.Execute(strSql) iferr.number<>0then response.write"记录添加不成功! " else response.write" response.write"alert('记录添加成功! ');" response.write"" endif endif …… %> 这样,最基本的程序功能增加记录已完成,该程序以能运行,但还不能满足要求。 现在学生需要加以改进为其逐步增加所需的功能。 5、显示、删除学生信息 用户每增加一条新记录之后都能在页面的下方立刻看到,同时能对该记录进行删除操作。 设计如图5-5所示界面。 图5-5: 学生信息显示与删除界面 代码清单5-6: 在表格中显示记录 …… <%dowhilenotrs.eof%> <%response.writetrim(rs("stuNo"))%>
<%response.writetrim(rs("stuName"))%>
<%response.writetrim(rs("sex"))%>
<%response.writetrim(rs("deptName"))%>
value="<%=rs("stuNo")%>"/>
<%
rs.movenext
loop
rs.close
setrs=nothing
%>
为删除按钮delete中的onclick事件增加代码。
代码清单5-7:
onclick函数
……
functiontest(){
if(!
confirm('确定删除吗?
'))
returnfalse;
}
……
……
然后在前添加删除记录代码。
代码清单5-8:
删除记录
……
ifrequest("selectStuNo").count<>0then//如果选择的复选框不为0
fori=1torequest("selectStuNo").count//依次删除记录
conn.Execute"deletefromstudentInfowherestuNo='"&request("selectStuNo")(i)&"'"
next
endif
……
四、实训任务和步骤
总体任务:
继续完善学生信息维护中的其他功能。
其中界面代码由教师提供,数据库访问代码由学生自己添加完成。
五、作业
模拟QQ登录界面,依据实训中的登录界面设计与实现创建一个QQ登录界面。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实训 数据库连接
![提示](https://static.bingdoc.com/images/bang_tan.gif)