为了让读者综合了解数据库在线管理,下面以简单的“学生信息在线管理”为例,具体介绍数据库访问组件的应用。
1.系统的实现
组成系统的文件如下:
数据库文件——school.mdb
连接数据库文件——odbc_conn.asp
显示成员文件——index.asp
添加成员表单文件——add_form.asp
添加成员文件——add.asp
修改成员表单文件——change_form.asp
修改成员文件——change.asp
删除成员文件——delete.asp
下面依次建立各文件。
2.数据库文件school.mdb
该文件在本章前面已经建立。
3.连接数据库文件odbc_conn.asp
由于很多文件都要用到连接数据库的语句,为了方便,可以将这部分单独写成一个文件,然后在其他文件中用〈!--#Includefile=″odbc_conn.asp″--〉将其包括进来。这样做的好处是如果要修改连接数据库的语句时,只要修改这个文件就行了。程序代码如下:
〈%
Dim Conn
Set Conn=Server .CreateObject (″ADODB.Connection″)
Conn.ConnectionString=″DRIVER={Microsoft Access Driver (*.mdb)};DBQ=″&_
Server .MapPath (″school .mdb″)
Conn.Open
%〉
4.显示成员文件index.asp
该文件用分页方式显示所有成员,并添加链接到其他页面的超链接,另外,因为这个页面作为该系统的首页,一般命名为index.asp。
代码如下:
〈!--#Include file=″odbc_conn.asp″--〉
〈%CPageName=Request .servervariables (″SCRIPT_NAME″)%〉
〈HTML〉
〈HEAD〉
〈TITLE〉学生信息管理系统〈/TITLE〉
〈SCRIPT LANGUAGE=″VBScript″〉
Sub gopage ()
If Window.event .keycode=13 Then ′若按回车键
pno=document .frmPage.pageno.value ′获得文本框中输入的页号
Window.location.href=″〈%=CPageName%〉?pageno=″& pno
End If
End Sub
〈/SCRIPT〉
〈/h EAD〉
〈BODY bgcolor=″#FFFFFF″〉
〈DIV align=″center″〉〈H2〉学生信息管理系统- 首页显示信息〈/H2〉〈/DIV〉
〈%
Dim str Sql,rs
strSql=″select*from student order by id desc″
Set Rs=Server .CreateObject (″ADODB.RecordSet″)
Rs .Open strSgl ,Conn,1,3,&H0001
Dim Cpage_no ′当前页号
Rs .PageSize=5 ′设置每页显示的记录数
If Request .Querystring (″pageno″)=″″Then ′查询所要显示的页号
Cpage_no=l ′若未指定, 则显示第 1 页
Else
Cpage_no=Cint (Request .Querystring (″pageno″))′设 .所要显示的页号
End If
Rs .AbsolutePage=Cpage_no
%〉
〈DIV align=″right″〉
〈FORM Name=″frmPage″〉
第〈INPUT type=″text ″Name=″pageno″onKeyPress=″gopage ()″size=4〉页
〈/FORM〉
〈/DIV〉
〈TABLE border=l align=center width=″100%″〉
〈TR bgcolor=#E0E0E0 align=center〉
〈TD〉学号〈/TD〉〈TD〉姓名〈/TD〉〈TD〉性别〈/TD〉〈TD〉出生 日期〈/TD〉
〈TD〉专业〈/TD〉〈TD〉成绩〈/TD〉〈TD〉电话〈/TD〉〈TD〉电子邮箱〈/TD〉
〈TD〉修改〈/TD〉〈TD〉删除〈/TD〉
〈/TR〉
〈%
LineNo=l
Do While NOT Rs .EOF AND Line No〈=Rs.PageSize ′输出当前页的内容
Response .write ″〈TR〉″
For i=1 To Rs .Fields .count-1 ′id 自动编号字段不输出
fdvalue=Rs (i)
If isnull (fdvalue)Then
Response .write ″〈TD〉 ;〈/TD〉″
Else
If RS (i).Name=″email ″Then
If instr (Rs (i),″@″)〈〉0 Then ′若为 Email 地址
Response .write ″〈TD〉〈a href=mailto:″&trim(Rs (i))&″〉″&trim(Rs (i))&
″〈/A〉〈/TD〉″
Else
Response .write″〈TD〉″&Rs (i)&″〈/TD〉″
End If
Else
Response .write″〈TD〉″&Rs (i)&″〈/TD〉″
End If
End If
Next
Response .write″〈TD〉〈A href=′change_form.asp?v_id=″&Rs (″id″)&″′〉修改
〈/A〉〈/TD〉″
Response .write ″〈TD〉〈A href=′delete .asp?v_id=″&Rs (″id″)&″′〉删除〈/A〉〈/TD〉″
Rs .MoveNext
Response .write ″〈/TR〉″
LineNo=LineNo+1
Loop
%〉
〈/TABLE〉
〈DIV align=″center″〉
〈TABLE border=0 width=″100%″〉
〈TR〉
〈TD align=″left″〉〈A href=″add_form.asp″〉添加新学生〈/A〉〈/TD〉
〈TD align=″right″〉
第〈%=Cpage_no%〉/〈%=Rs .PageCount%〉页 共〈%=Rs .RecordCount%〉条记录
〈/TD〉
〈TD align=″right″〉
〈%
For i=1 to Rs .PageCount ′显示分页页码
If i=Cpage_no then
Response .write i&″ ;″
Else
Response .write ″〈a href=′″&CPageName & ″?pageno=″&i & ″′〉″&i & ″〈/a〉 ;″
End If
Next
%〉
〈/TD〉
〈/TR〉
〈/TABLE〉
〈/DIV〉
〈%
RS .close
Set rs=Nothing
Conn.close
Set Conn=Nothing
%〉
〈/BODY〉
〈/HTML〉
程序运行结果如图7-15所示。
图7-15 index.asp运行结果
5.添加成员表单文件add_form .asp
代 码 如 下 :
〈HTML〉
〈HEAD〉
〈TITLE〉添加记录表单〈/TITLE〉
〈/HEAD〉
〈BODY〉
〈H2 align=″center″〉添加新记录〈/H2〉
〈DIV align=″center″〉
〈FORM method=″POST″action=″add.asp″〉
〈TABLE border=″1″cellpadding=″0″cellspacing=″0″width=″340″〉
〈TR〉
〈TD width=″39%″align=″center″〉学 ; ; ;号〈/TD〉
〈TD width=″61%″align=″left ″〉
〈INPUT type=″text″name=″s_id″size=″20″〉*
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉姓 ; ; ;名〈/TD〉
〈TD width=″61%″align=″left″〉
〈INPUT type=″text″name=″name″size=″20″〉*
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉性 ; ; ;别〈/TD〉
〈TD width=″61%″align=″left″〉
〈INPUT type=″radio″value=″男″checked name=″sex″〉男
〈INPUT type=″radio″name=″sex″value=″女 ″〉女
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉出生 日期〈/TD〉
〈TD width=″61%″align=″left″〉
〈INPUT type=″text″name=″birthday″size=″20″〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉专 ; ; ;业〈/TD〉
〈TD width=″61%″align=″left ″〉
〈INPUT type=″text″name=″class″ size=″20″〉*
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉成 ; ; ;绩〈/TD〉
〈TD width=″61%″align=″left ″〉
〈INPUT type=″text″name=″grade″size=″20″〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉电 ; ; ;话〈/TD〉
〈TD width=″61%″align=″left″〉
〈INPUT type=″text″name=″tel″ size=″20″〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉电子邮箱〈/TD〉
〈TD width=″61%″align=″left ″〉
〈INPUT type=″text″name=″email″ size=″20″〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″left″〉
〈P align=″right″〉〈INPUT type=″submit″value=″提交″name=″B1″〉〈/P
〈/TD〉
〈TD width=″61%″align=″left″〉
〈INPUT type=″reset ″value=″全部重写″name=″B2″〉
〈/TD〉
〈/TR〉(www.xing528.com)
〈/TABLE〉
〈/FORM〉
〈/DIV〉
〈/BODY〉
〈/HTML〉
程序运行结果如图7- 16所示 。
图7-16 add_form.asp运行结果
6.添加成员文件add.asp
代码如下:
〈!--#Include file=″odbc_conn.asp″--〉
〈%
′如果上面的信息填全了,就添加记录,否则给出错误信息
If Request .Form(″s_id″)〈〉""And Request .Form(″name″)〈〉″″And Request .Form(″class″)
〈〉″″Then
Dim strSql,Rs
strSql=″select*from student″
Set Rs=Server .CreateObject (″ADODB.RecordSet ″)
Rs .Open strSgl,Conn,l,3
Rs .Addnew
Rs (″s_id″)=Request .Form(″s_id″)
Rs (″Name″)=Request .Form(″name″)
Rs (″sex″)=Request .Form(″sex″)
If Request .Form(″birthday″)〈〉″″Then
If IsDate(CDate(Request.Form(″birthday″)))Then
Rs(″birthday″)=CDate(Request.Form(″birthday″))
End If
Else
Rs(″birthday″)=NULL
End If
Rs(″class″)=Request.Form(″class″)
If Request.Form(″grade″)〈〉″″Then
Rs(″grade″)=Request.Form(″grade″)
Else
Rs(″grade″)=NULL End If
If Request.Form(″tel″)〈〉″″Then
Rs(″tel″)=Request.Form(″tel″)
Else
Rs(″tel″)=NULL
End If
If Request.Form(″email″)〈〉″″Then
Rs(″email″)=Request.Form(″email″)
Else
Rs(″email″)=NULL
End If
Rs.update
Response.Redirect ″index.asp″ ′添加成功,则返回首页
Else
Response.Write ″请将关键信息(*)填写完整,″
Response.Write ″〈A href=′add_form.asp′〉重新添加〈/A〉″
End If
%〉
在首页index.asp 中单击 “添加新学生”按钮,就会打开图7-16所示的添加新记录。当填写完整信息后,单击“提交”按钮,就可以将新记录添加到数据表student中,然后重定向回首页, 若输入的关键信息不完整, 则会提示用户重新填写。
7. 修改成员表单文件change_form.asp
代码如下:
〈!--#Include file=″odbc_conn.asp″--〉
〈HTML〉
〈HEAD〉
〈TITLE〉修改记录表单〈/TITLE〉
〈/HEAD〉
〈BODY〉
〈H2 align=″center″〉修改记录〈/H2〉
〈%
Dim strSql,Rs,V_id
V_id=Request .QueryString (″v_id″)
strSgl=″select*from student where id=″&V_id
Set Rs=Server .CreateObject (″ADODB.RecordSet″)
Rs .Open strSgl,Conn,1,3
%〉
〈DIV align=″center″〉
〈FORM method=″POST″action=″change .asp″〉
〈TABLE border=″1″cellpadding=″0″cellspacing=″0″width=″100%″〉
〈TR〉
〈TD width=″39%″align=″center″〉学 ; ; ;号〈/TD〉
〈TD width=″61%″align=″left ″〉
〈INPUT type=″text″name=″s_id″size=″20″value=〈%=Rs (″s_id″)%〉〉*
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉姓 ; ; ;名〈/TD〉
〈TD width=″61%″align=″left″〉
〈INPUT type=″text ″name=″name″ size=″20″value=〈%=Rs (″name″)%〉〉*
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉性 ; ; ; 别〈/TD〉
〈TD width=″61%″align=″left″〉
〈% If Rs (″sex″)=″男 ″Then %〉
〈INPUT type=″radio″name=″sex″value=″男″checked〉男
〈INPUT type=″radio″name=″sex″value=″女″〉女
〈%Else %〉
〈INPUT type=″radio″name=″sex″value=″男″〉男
〈INPUT type=″radio″name=″sex″value=″女″checked〉女
〈%End If %〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉出生 日期〈/TD〉
〈TD width=″61%″align=″left ″〉
〈INPUT type=″text″name=″birthday″size=″20″value=〈%=Rs (″birthday″)%
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉专 ; ; ;业〈/TD〉
〈TD width=″61%″align=″left ″〉
〈INPUT type=″text″name=″class″size=″20″value=〈%=Rs (″class″)%〉〉*
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉成 ; ; ;绩〈/TD〉
〈TD width=″61%″align=″left″〉
〈INPUT type=″text″name=″grade″ size=″20″value=〈%=Rs (″grade″)%〉〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉电 ; ; ;话〈/TD〉
〈TD width=″61%″align=″left″〉
〈INPUT type=″text ″name=″tel″size=″20″value=〈%=Rs (″tel″)%〉〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″39%″align=″center″〉电子邮箱〈/TD〉
〈TD width=″61%″align=″left″〉
〈INPUT type=″text″name=″email″size=″20″value=〈%=Rs (″email″)%〉〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″78%″align=″center″colspan=″2″〉
〈INPUT type=″hidden″name=″V id″value=〈%=V id%〉〉
〈INPUT type=″submit″value=″提交 ″name=″B1″〉
〈/TD〉
〈/TR〉
〈/TABLE〉
〈/FORM〉
〈/DIV〉
〈/BODY〉
〈/HTML〉
程序运行结果如图7- 17所示。
图7-17 change_form.asp运行结果
8.修改成员文件change.asp
〈!--#Include file=″odbc_conn .asp″--〉
〈%
Dim V id
V_id=Request .Form(″V_id″)
′如果上面的信息填全了,就修改记录,否则给出错误信息
If Request .Form(″s_id″)〈〉″″And Request .Form(″name″)〈〉″″And Request .Form
(″class″)〈〉″″Then
Dim strSql,Rs
strSql=″select*from student where id=″ & Vid
Set Rs=Server .CreateObject (″ADODB.RecordSet″)
Rs .Open strSgl,Conn,1,3
Rs (″s_id″)=Request .Form(″s_id″)
Rs (″Name″)=Request .Form(″name″)
Rs (″sex″)=Request .Form(″sex″)
If Request .Form(″birthday″)〈〉″″Then
If IsDate (CDate (Request .Form(″birthday″)))Then
Rs (″birthday″)=CDate (Request .Form(″birthday″))
End If
Else
Rs (″birthday″)=NULL
End If
Rs (″class″)=Request .Form(″class″)
If Request .Form(″grade″)〈〉″″Then
Rs (″grade″)=Request .Form(″grade″)
Else
Rs (″grade″)=NULL
End If
If Request .Form(″tel″)〈〉″″Then
Rs (″tel″)=Request .Form(″tel ″)
Else
Rs (″tel ″)=NULL
End If
If Request .Form(″email″)〈〉″″Then
Rs (″email″)=Request .Form(″email″)
Else
Rs (″email″)=NULL
End If
Rs .update
Response .Redirect ″index .asp″ ′修改成功, 则返回首页
Else
Response .Write ″请将关键信息 (*)填写完整,
Response.Write ″〈a href=′change_ form.asp?v_id=″& V_id & ″′〉重新修改〈/a〉″
End If
%〉
9.删除成员文件delete.asp
〈!--#Include file=″odbc conn .asp″- -〉
〈% _
Dim str Sql,Rs,V--id
V_id=Request .Query String (″V_id″)
str Sql=″select*from student where id=″&V_id
Set Rs=Server .CreateObject (″ADODB.RecordSet″)
Rs .Open str Sgl,Conn,1,3
Rs .Delete
Rs .update
Response .Redirect ″index .asp″ ′删除成功, 则返回首页
%〉
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。