1、WEB数据库技术与应用复习大纲及课后习题P1236.15 建立一种Access数据库DB1和数据表Student,它包括字段如下表所示:字段名数据类型阐明Stno文本学号Stname文本姓名Sex文本性别Age数字年龄Addr文本住址E-mail文本电子邮件输入5位学生模仿数据,运用Connection对象编写ASP程序来显示Student中内容。解答:建立数据库DB1和数据表Student:点击“开始”,在子菜单中再点击“程序”,在下级菜单中点击“办公软件”,选取“Microsoft Access”打开,选取“空数据库”,选取好存储途径后命名为“DB1”。然后打开数据库,弹出如下对话框:然后
2、点击“设计”,弹出如下对话框:输入各字段信息得到表如下所示:然后关闭这个界面,另存为“student”表,而后向“student”表中输入数据,如下所示:向数据库中添加信息,设计一种输入界面,用IE浏览器打开如下所示:它代码如下所示:信息输入 输入学生信息 学号: 姓名: 性别: 女 男 年龄: 住址: E-mail: 向界面输入完信息之后,点击添加转入ASP解决程序:(1)“condb.asp”程序如下:%set conn=server.CreateObject(adodb.connection) set urs=server.CreateObject(adodb.recordset)set
3、 ers=server.CreateObject(adodb.recordset)usqlstr=select * from useresqlstr=select * from empconnstr=driver=Microsoft Access Driver (*.mdb);DBQ= &Server.MapPath(zhgdb.mdb) 与参数顺序无关conn.open connstr将Recordset 输出成HTML “表格” Sub list(rs) Part I:输出数据库“表头” Response.Write Response.Write For i=0 to rs.Fields.
4、Count-1 Response.WRITE & rs.Fields(i).Name & Next Response.Write Part II:输出数据库“内容” While Not rs.EOF Response.Write For i=0 to rs.Fields.Count-1 Response.WRITE & rs.Fields(i).Value & Next Response.Write rs.MoveNext Wend Response.Write End Sub%(2)“lx615_add.asp”程序如下:(3)“lx615_list.asp”程序如下:% 将Recordse
5、t 输出成HTML “表格” Sub RsToTable( rs ) Part I:输出数据库“表头” Response.Write Response.Write For i=0 to rs.Fields.Count-1 Response.WRITE & rs.Fields(i).Name & Next Response.Write Part II:输出数据库“内容” While Not rs.EOF Response.Write For i=0 to rs.Fields.Count-1 Response.WRITE & rs.Fields(i).Value & Next Response.W
6、rite rs.MoveNext Wend Response.Write End Subset conn=server.CreateObject (adodb.connection) sqlstr=select * from studentconnstr=driver=Microsoft Access Driver (*.mdb);DBQ= &Server.MapPath(db1.mdb) 与参数顺序无关conn.open connstrset rs=conn.execute(sqlstr) if rs.eof and rs.bof then 如果数据指针同步指到记录集头部根尾部阐明记录集为空
7、 response.write 没有可以显示数据 打印“没有可以显示数据” end ifRsToTable( rs )%!-for i=0 to rs.fields.count-1 输出字段名 response.write rs(i).name+ next response.write 换行 do until rs.EOF 循环直到记录集尾部为止 response.write rs(stno)+ 显示一种行第一种字段值 response.write rs(stname)+ 同上 response.write rs(sex)+ 同上 response.write rs(age) 同上 respo
8、nse.write +rs(addr)+ 同上 response.write rs(E-mail)+ 同上 response.write 一种行打印完毕,换行 rs.MoveNext 将数据指针移到下一种行 loop -(4)“lx615.asp”(链接数据库)程序如下:% set conn=server.CreateObject (adodb.connection) sqlstr=select * from student1.使用ODBC驱动程序直接与数据库连接与Access数据库连接connstr=driver=Microsoft Access Driver (*.mdb);DBQ= &S
9、erver.MapPath(studentdb.mdb) &;PWD=bbb 与参数顺序无关conn.open connstr或者connstr=driver=Microsoft Access Driver (*.mdb);DBQ= &Server.MapPath(studentdb.mdb) 与参数顺序无关conn.open connstr,aaa,bbb与SQL Server数据库连接connstr=driver=SQL Server;server=localhost;database=studentdb;UID=aaa;PWD=bbbconn.open connstr2.使用OLE DB
10、驱动程序直接与数据库连接与Access数据库连接connstr=Provider=Microsoft.Jet.OLEDB.4.0;Data Source= &Server.MapPath(studentdb.mdb) &;Jet OLEDB:Database Password=bbb 不能用PWD=bbb形式定义数据库密码conn.open connstr与SQL Server数据库连接connstr=Provider=SQLOLEDB.1;Data Source=localhost;database=studentdb;UID=aaa;PWD=bbbconn.open connstr3.使用
11、DSN与数据库连接ODBC数据源管理器”提供了三种DSN,分别为顾客DSN、系统DSN和文献DSN。其中,顾客DSN会把相应配备信息保存在Windows注册表中,但是只容许创立该DSN登录顾客使用。系统DSN同样将关于配备信息保存在系统注册表中,但是与顾客DSN不同是系统DSN容许所有登录服务器顾客使用。但必要使用账号和密码。与上述两种数据库DSN不同,文献DSN把详细配备信息保存在硬盘上某个详细文献中。文献DSN容许所有登录服务器顾客使用,并且虽然在没有任何顾客登录状况下,也可以提供对数据库DSN访问支持。此外,由于文献DSN被保存在硬盘文献里,因此可以以便地复制到其他机器中。这样,顾客可以
12、不对系统注册表进行任何改动就可直接使用在其他机器上创立DSN。 在以上三种数据库DSN中,建议顾客选取系统DSN或文献DSN,如果顾客更喜欢文献DSN可移植性,可以通过在NT系统下设定文献访问权限获得较高安全保障。使用顾客DSN连接数据库connstr=DSN=MyTb1;UID=aaa;PWD=bbb conn.open connstr使用系统DSN连接数据库connstr=DSN=MyTb;UID=aaa;PWD=bbb conn.open connstr使用文献DSN连接数据库 如果显示错误类型:Microsoft OLE DB Provider for ODBC Drivers (0x
13、80040E4D)MicrosoftODBC SQL Server DriverSQL Server顾客 sa 登录失败。 错误解决:一方面用ODBC数据源配备你DSN属性,选取sql server验证并输入顾客名和密码. 然后用文本编辑器打开你文献DSN,修改其中UID属性,并添加PWD=你密码,即可.connstr=FILEDSN= &server.mappath(MyTb3.dsn) conn.open connstrconn.Open conn.open connstrset rs=server.CreateObject (ADODB.Recordset) set rs=conn.ex
14、ecute(sqlstr) if rs.eof and rs.bof then 如果数据指针同步指到记录集头部根尾部阐明记录集为空 response.write 没有可以显示数据 打印“没有可以显示数据” end iffor i=0 to rs.fields.count-1 输出字段名 response.write rs(i).name+ next response.write 换行 do until rs.EOF 循环直到记录集尾部为止 response.write rs(sno)+ 显示一种行第一种字段值 response.write rs(sname)+ 同上 response.writ
15、e rs(sex)+ 同上 response.write rs(age) 同上 response.write +rs(addr)+ 同上 response.write rs(E-mail)+ 同上 response.write 一种行打印完毕,换行 rs.MoveNext 将数据指针移到下一种行 loop 循环结束 rs.closeset rs=nothingconn.close%打开数据库DB1,显示如下界面:输入密码:“bbb”,点击“拟定”,进入数据库,打开“student”表如下所示:6.18 建立一种Access数据库DB2和数据表emp,它包括字段如下表所示:字段名数据类型Enam
16、e文本Esex文本Eage数字Eaddr文本Etelno文本运用RecordSet组件编写ASP程序,通过表单输入四个职工模仿数据,并在浏览器上显示emp表中所有内容。解答:建立数据库DB1和数据表Student:点击“开始”,在子菜单中再点击“程序”,在下级菜单中点击“办公软件”,选取“Microsoft Access”打开,选取“空数据库”,选取好存储途径后命名为“DB2”。然后打开数据库,弹出如下对话框:然后点击“设计”,弹出如下对话框:输入各字段信息得到表如下所示:点击“关闭”,弹出对话框“另存为”,输入表名“emp”,点击“拟定”。向数据库中添加信息,设计一种输入界面,用IE浏览器打
17、开如下所示:程序代码如下:信息输入 输入职工信息 姓名: 性别: 女 男 年龄: 住址: 电话: 输入完信息之后,点击“添加”,转到解决界面:添加完后,打开数据库“DB2”,再打开“emp”表,如下所示:6.21 综合题编写一种小型人事档案管理系统,使其功能具备:(1)职工注册功能(2)增长或减少一种职工记录(3)修改职工记录(4)查询(条件查询)职工记录(5)退出系统功能解答:(1)打开IE浏览器,在地址栏中输入“http:/localhost/”子站点“lx621_enter.html”进入登陆界面。程序如下:顾客登录 输入登录信息 顾客名: 密码: 进入输入登录信息界面后,输入对的顾客名
18、和密码,按“登录”进入主界面,如果没有注册,按注册按纽进入“职工注册界面”。登录界面如下图所示:输入顾客名和密码,按“登录”,转到“lx621_checklogin.asp”解决。“lx621_checklogin.asp”程序如下:%dim name,pwd,login,flagname=request.form(uname)/*取表单相应值送给变量*/pwd=request.form(password)login=request.form(login)urs.open usqlstr,conn,1,1/*只读取数据设立1,1;添加数据设立1,2;改写数据2,3*/if login=登录 t
19、hen session(count)=session(count)+1 do while not urs.eof if name=urs(uname) then if pwd=urs(password) then flag=1 登录成功标志 exit do else flag=0 exit do end if else urs.MoveNext end if loopend ifif session(count)=3 then if urs.eof then response.write 顾客名错误,请重新登录!返回 end if if flag then response.redirect
20、lx621_main.html else response.write 密码错误,请重新登录! 返回 end ifelse response.write 非法顾客,无权使用本系统!end ifif login=注册 then response.redirect lx621_login.htmlend if%(2)登录“人事档案管理系统”(“lx621_main.html”)面程序如下:人事档案管理系统人事档案管理系统职工注册 添加一条职工记录 删除职工记录 修改职工信息 查询职工信息
21、显示职工信息 退出系统(3)在“人事档案管理系统”界面中,点击“职工注册”,转入“职工注册”(“lx621_login.html”)界面a. “lx621_login.html”,向界面中输入职工信息程序如下:职工注册 输入注册信息 职工号 *必要填写 顾客名 *必要填写 密码 b.当信息输入完毕,按“提交”按钮转入“lx621_login.asp”界面进行解决。程序如下:%sub eno_check_ers(num) do while not ers.eof if numers(eno) then ers.MoveNext else exit do end if loo
22、pend subsub eno_check_urs(num) urs.MoveFirst do while not urs.eof if numurs(eno) then urs.MoveNext else exit do end if loopend subsub uname_check(name) if name= then response.write alert(顾客名不能为空,请重新输入!) response.write 返回 else urs.MoveFirst do while not urs.eof if nameurs(uname) then urs.MoveNext els
23、e exit do end if loop if not urs.EOF then response.write alert(顾客名已经存在,请重新输入!) response.write 返回 end if end ifend subdim eno,uname,pwdeno=request.form(eno)uname=request.form(uname)pwd=request.form(password)urs.open usqlstr,conn,1,2/*只读取数据设立1,1;添加数据设立1,2;改写数据2,3*/ers.open esqlstr,conn,1,1eno_check_er
24、s enoif ers.EOF then response.write alert(职工号为空或非本单位职工,请重新输入!) response.write 返回 else eno_check_urs eno if not urs.EOF then response.write alert(本职工已经注册,请重新输入!) response.write 返回 else uname_check uname end ifend ifif not ers.EOF and urs.EOF then urs.addnew /*告诉urs,要添加一种空行*/ urs(eno)=eno /*给要添加行一种字段赋值*/ urs(uname)=uname urs(password)=pwd /*同上*/ urs(logindate)=date /*同上*/ urs.update response.write alert(恭喜你,注册成功,请登录系统!) response.write 返回 end ifers.closeset ers=nothing%(4)在“人事档案管理系统”中,点击“添加一条职工记录”转到“输入职工信息”(“lx621_add.html”)界面a.在“输入职工信息”界面输入职工信息程序如下:添加职工信息