存储在数据库或其他表格化数据结构中的信息。
3.3ASP访问数据库步骤
在ASP中,使用ADO组件访问后台数据库,可通过以下步骤进行:
3.3.1定义数据源
在WEB服务器上打开"控制面板",选中"ODBC",在"系统DSN"下选"添加",选定你希望的数据库种类、名称、位置等。本文定义"Access",数据源为"HT",数据库名称为"HTDATA",脚本语言采用JavaScript。
3.3.2使用ADO组件查询WEB数据库
1调用Server.CreateObject方法取得"ADODB.Connection"的实例,再使用Open方法打开数据库:
conn=Server.CreateObject("ADODB.Connection")
conn.Open("HT")
2指定要执行的SQL命令
连接数据库后,可对数据库操作,如查询,修改,删除等,这些都是通过SQL指令来完成的,如要在数据表signaltab中查询代码中含有"X"的记录
sqlStr="select*fromsignaltabwherecodelike'%X%'"
rs=conn.Execute(sqlStr)
3执行的SQL命令
Command对象:执行SQL指令,访问数据库。只能读不能写。
Open对象:执行SQL指令,访问数据库。既能读又能写。
Execute对象:执行SQL指令,访问数据库。只能读不能写。
4使用RecordSet属性和方法,并显示结果
为了更精确地跟踪数据,要用RecordSet组件创建包含数据的游标,游标就是储存在内存中的数据。
rs=Server.CreateObject("ADODB.RecordSet")
rs.Open(sqlStr,conn,1,A)
注:A=1读取
A=3新增、修改、删除
在RecordSet组件中,常用的属性和方法有:
rs.Fields.Count:RecordSet对象的字段数。
rs(i).Name:第i个字段的名称,i为0至rs.Fields.Count-1
rs(i):第i个字段的数据,i为0至rs.Fields.Count-1
rs("字段名"):指定字段的数据。
rs.Record.Count:游标中的数据记录总数。
rs.EOF:是否最后一条记录。
rs.MoveFirst:指向第一条记录。
rs.MoveLast:指向最后一条记录。
rs.MovePrev:指向上一条记录。
rs.MoveNext:指向下一条记录。
rs.GetRows:将数据放入数组中。
rs.Properties.Count:ADO的ResultSet或Connection的属性个数。
rs.Properties(item).Name:ADO的ResultSet或Connection的名称。
rs.Properties:ADO的ResultSet或Connection的值。
rs.close():关闭连接。
5关闭数据库
conn.close()
3.4本章小结
本章一开始对ASP的工作原理作了简单的介绍,接着比较详细的介绍了ASP的内置对象和内置组件,最后阐述了ASP访问数据库步骤。
第4章通讯助理和工作计划模块的
本系统由工作计划,通告管理,人力资源管理,通讯助理,电子邮件,会议管理,档案资料,设置这几个模块组成。系统设计了管理员和普通用户登陆并使用本系统,能录入、修改自己的个人信息,查看自己的工作计划,浏览通告,人力资源,发送邮件,档案资料和会议管理。
作者主要制作的是工作计划和通讯助理两个模块,下面对这两个模块的作具体的介绍。
4.1数据库的连接和释放
本系统的所有数据都存放在数据库中,每次要使用数据库中的数据时,就必须先连接数据库,然后才可以对数据库进行添加、修改、删除数据等操作。在使用完数据库后,还要关闭与数据库的连接。
由于每次对数据库的操作都要先连接数据库,所以把连接数据库的代码写在一个名为conn.asp的文件中,具体代码如下:
<%
dimconn
dimconnstr
resumenext
connstr="DBQ="+server.mappath("../db/sdoa.asa")+";DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};"
setconn=server.createobject("ADODB.CONNECTION")
iferrthen
err.clear
elseconn.openconnstr
iferrthen
err.clear
endif
endif
%>
这样就创建了一个名为conn的connection对象实例,每次要使用数据库时,就使用语句调用这段代码,但connection仅仅是建立了对数据库的连接,接下来就要创建一个recordset对象,见如下代码:
setrs=server.createobject("adodb.recordset")
sql="select*fromuseridwhereusername='"&username&"'"
rs.opensql,conn,1,3
使用open方法就打开了对数据库的连接,接下来就可以对数据库中的数据进行操作了。
当使用完数据库后,就要中断对象与数据库的连接,并把对象从数据库中移除以释放资源。见如下代码:
rs.close
setrs=nothing
conn.close
setconn=nothing
这样就完成了一次对数据库的操作。
4.2通讯助理模块的实现
这个模块主要是建立一个个人通讯录,每个用户可以对自己通讯录中的联系人资料进行添加,删除和查询。还可以对不同的联系人进行分组,方便查看。
4.2.1个人通讯录模块设计
这个模块主要有五个页面组成分别是personaddrecord.asp、personfind.asp、personaddtype.asp、personfindresult.asp、personlist.asp。personaddrecord.asp页面是输入个人通讯录资料的,成功增加个人通讯录后直接保存在通讯录中。personaddtype.asp页面可以把通讯录中的资料根据本人是需要分类,进行分别管理。当你的通讯录联系人很多无法一下子找到某人时,可以用personfind.asp页面进行查询。上述资料的调用结果就显示在页面personfindresult.asp。personlist.asp显示个人通讯录的页面。
下面画出通讯录各个页面的流程图:
图4.1个人通讯录流程
4.2.2增加个人通讯录
在personaddrecord.asp页面中输入个人资料保存到通讯录中。通讯录中打*号的姓名和单位是必填的,其他资料可填可不填。例如要在通讯录中增加名为"张三"的资料,在个人通讯录主页personlist.asp中直接点击"增加"按钮,具体页面设计图如图4.1,填写资料,填写完成后点击"输入"按钮,出现"成功输入个人通讯录资料!"字样就说明也成功增加了个人通讯录,可以点击"继续增加"按钮继续增加个人通讯录或"返回"按钮返回个人通讯录主页。
图4.2通讯录增加
代码如下:
<%
setconn=opendb("oabusy","conn","accessdsn")
setrs=server.createobject("adodb.recordset")//使用server.createobject方法建立recordset对象实例
sql="select*frompersontypewhereusername='"&oabusyusername&"'"
rs.opensql,conn,1
ifrs.eoforrs.bofthen
conn.close//先关数据库链接释放recordset对象实例所占用的空间
setrs=nothing
response.write("")
response.write("location.href=""personaddtype.asp"";")
response.write("")
response.end
endif
dowhilenotrs.eof
%>
"><%=rs("typename")%>
<%
rs.movenext
loop
conn.close
setrs=nothing
%>
4.2.3通讯录类别管理页面设计
在Dreamweaver中建立personaddtype.asp页面,该页面要设计的是把通讯录中的资料根据本人的需要进行分类,可以随时更改、添加,不需要的时候还可以删除等功能。例如把"同事"这个类别改成"工作伙伴",只要把"同事"用"工作伙伴"代替,点击"修改"出现"修改成功!"字样就说明类别名称已经成功修改了,如图4.2。注意这里不能直接点"删除"按钮,因为删除个人通讯录名称时将删除该通讯录中的所有资料。并且可以增加通讯录的类别,只要把要增加的名字输入点击"增加"按钮就可以了。
图4.3类别管理修改
修改类别代码如下:
ifrequest("submit")="修改"anduserlevel<>""then
'判断是否有与修改的职位相同的
setconn=opendb("oabusy","conn","accessdsn")
setrs=server.createobject("adodb.recordset")//使用server.createobject方法建立recordset对象实例
sql="select*frompersontypewheretypename="&sqlstr(userlevel)&"andusername="&sqlstr(oabusyusername)&"andid<>"&id
rs.opensql,conn,1
ifnotrs.eofandnotrs.bofthen
%>
<%=keepformat(userlevel)%>已经存在,请换名重试!
<%
else
sql="updatepersontypesettypename="&sqlstr(userlevel)&"whereid="&id
conn.Executesql
4.2.4查询个人资料设计
在MacromediaDreamweaver中建立personfind.asp页面,在个人通讯录主页面中点击查询按钮直接转换到personfind.asp页面,输入要查询的名字点击按钮查询就可以把要查询人的所有通讯资料都显示出来。当然也可以按照性别,单位,职务,电子邮件等条件进行查询。例如要查询通讯录中有没有一个叫张三的人的资料,可以直接在通讯录主页面中点击"查询"按钮进入"个人通讯录查询"页面,在姓名栏输入张三,单击"查询"按钮,就会显示张三是所有通讯资料,具体页面设计见图4.3所示。
图4.4个人通讯录查询
查询代码如下:
functioncheckform()
{
varxm,xb,dw,zw,dzyj;
xm=document.form1.xm.value;
xb=document.form1.xb.value;
dw=document.form1.dw.value;
zw=document.form1.zw.value;
dzyj=document.form1.dzyj.value;
if(xm==""&&xb==""&&dw==""&&zw==""&&dzyj=="")
{
alert("请至少输入一个查询条件!");
return(false);
}
return(true);
}
4.2.5查询结果页面显示
建立查询结果页面personfindresult.asp,把上述personfind.asp中查询的结果显示在personfindresult.asp页面在中。
在查询页面中输入名字,如果通讯录中存在此人,则显示此人的所有通讯资料,
如图4.4所示:
图4.5个人工作计划查询结果
如果通讯录中没有要查询的人的资料,例如输入李四在,则显示如图4.5
图4.6没有找到符合条件的通讯录
具体代码如下:
<%
ifrequest.form("submit")="查询"then
xm=replace(request.form("xm"),"'","''")
xb=replace(request.form("xb"),"'","''")
dw=replace(request.form("dw"),"'","''")
zw=replace(request.form("zw"),"'","''")
dzyj=replace(request.form("dzyj"),"'","''")
sql="selectpersonrecord.ID,personrecord.companytel,personrecord.userzw,personrecord.xm,personrecord.email,personrecord.company,personrecord.sex,persontype.typenamefrompersonrecord,persontypewhere"
addandflag=0
condition=""
ifxm<>""then
condition=condition&"personrecord.xmlike'%"&xm&"%'"
addandflag=1
endif
ifxb<>""then
ifaddandflag=0then
condition=condition&"personrecord.sex='"&xb&"'"
addandflag=1
else
condition=condition&"andpersonrecord.sex='"&xb&"'"
endif
endif
ifdw<>""then
ifaddandflag=0then
condition=condition&"personrecord.companylike'%"&dw&"%'"
addandflag=1
else
condition=condition&"andpersonrecord.companylike'%"&dw&"%'"
endif
endif
ifzw<>""then
ifaddandflag=0then
condition=condition&"personrecord.userzwlike'%"&zw&"%'"
addandflag=1
else
condition=condition
上一篇:ASP022个人网站(论文和程序)
下一篇:商业银行发展绿色信贷业务的对策探讨