服务器端VFP数据库的技术实现
袁培燕,张俊娜
(河南师范大学物理与信息工程学院,河南新乡 453002)
摘要:Active Server Pages (ASP)是应用于服务器端的一种编程语言,对数据库有强大的操作、处理、控制能力。Visual FoxPro (VFP)是目前在社会上广泛流行的数据库开发工具之一,在教学领域内也得到了广大师生的喜爱。然而常见的服务器端数据库是Access和SQLServer,忽视了VFP广泛的用户基础。本文阐述了ASP对VFP作为服务器端数据库的综合控制,并给出了一个具体的解决方案。
关键词:VFP, 服务器端数据库,ASP,ADO
1 与数据库建立链路通道
一般情况下,asp与数据库建立链路通道有如下两种方法:
1.1 ODBC方式建立链路
在目前网络教材中关于这方面的知识介绍的较多,本文不再详述。有兴趣的读者请参阅参考文献[1]
1.2 ADO(ActiveX Data Objects)方式建立链路
ADO方式(见参考文献[2])是为访问OLEDB提供的编程接口模型,通过程序设计与数据库建立链路,与ODBC方式相比,突破了只能在局域网内调试程序的局限,更加灵活方便,因而是目前网络中较流行的一种方法。一般步骤如下:
①与数据库建立通信;
②通信成功后打开数据表;
③将数据表的信息存于记录集(RecordSet);
④以该记录集进行操纵显示到浏览器中。
下面结合VFP数据库进行具体的操作。
2 ASP与VFP的结合
2.1与数据源建立连接。
<% Driver="Driver={Microsoft Visual FoxPro Driver};"
DBPath="SourceDB=" & Server.MapPath("sjk.dbc")’取得数据库sjk存放的绝对路径
SourceType="SourceType=DBC;"
starttime=timer()’取得开始链路时的时间
set conn1=Server.Createobject("ADODB.Connection")’创建对象
%>
对各种数据库的链接方式见参考文献[3]。
2.2打开数据表
<%conn1.Open Driver & SourceType & DBPath%>
2.3将数据表的信息存于记录集(rs)
<%
set rs= Server.Createobject("ADODB.Recordset")
sql="select * from label"
rs.open sql,conn1,1,1
%>
2.4对记录集进行操作
2.4.1浏览操作
<%
rs.movefirst’指针回归
response.write"<table border=1 width=200 align=center><tr><td>姓名</td><td>年龄</td><td>编号</td></tr>"
do while not rs.eof
response.write"<tr><td>"
%><%=rs(0)%><%response.write"</td>"’每个字段的内容占表的某行的一列。一行对应表的一条记录
response.write"<td>"%><%=rs(1) %><%response.write"</td>"%>
<%response.write"<td>"%><%=rs(2) %><%response.write"</td>"
response.write"</tr>"%>
输出一条记录的内容
<%rs.movenext’指针下移
loop%>
<%response.write"</table>"
endtime=timer()’操作结束时的时间
timediff=(endtime-starttime)*1000&"毫秒"
%><div align="center">
<table border="1" width="200" height="21">
<tr>
<td align="center"><%=timediff%></td>
</tr>
</table>
浏览结果如下:
2.4.2插入操作
<%sqladder="insert into label(姓名,年龄,编号)values(’d’,’26’,’0004’)"
conn1.Execute(sqladder)%>
本文只介绍了插入一条记录的方法,插入多条记录以及将一个表中的内容导入到另一表中的方法只须加上一个循环就能完成,限于篇幅不在此做详细介绍。
插入结果如下:
2.4.3删除操作
<%sqldel="delete from label where 编号=’0004’"
conn1.Execute(sqldel)
%>
删除结果如下:
以上各种操作已在winxp和iis5.0环境下上机通过。
3 小结:
通过上面的分析,不难看出ASP操纵VFP数据库非常方便,响应时间也较短(一般在毫秒级)。有兴趣的读者还可以对各种数据库的响应时间做一比较,限于篇幅本文不在此详述。希望本文能起到一个抛砖引玉的作用。