利用ASP存取各种常用类型数据库

发布时间:2007年07月08日      浏览次数:1804 次
本文讨论利用ASP存取DBF、DBC、MDB、Excel、SQL Server型数据的方法及函数实现,最后给出一个利用本文提供的函数存取Excel型数据库的例子,对企事业数据重用及共享具有很强的实际意义。
关键词:
  ASP数据库存取 DBF DBC MDB Excel SQL Server
前言
  在Internet/Intranet网页上随处可见留言板、讨论组、网上投票、网上调查、聊天室等Internet功能模块,这些程序都是利用ASP(Active Server Page)与数据库技术结合而实现的。在Internet/Intranet上用的数据库大都是mdb数据库或SQL<数据库,但是在企事业Intranet<网中,各种版本的数据库已存在如DBF<、DBC、Excel、文本数据库,这些数据库是由应用软件如办公自动化系统、财务软件等所生成,如果ASP能直接利用这些类型数据库,就不需要重新建立数据库,进一步实现企业数据共享,究竟这些数据库能不能直接被ASP使用,笔者经过长期探讨总结出给出肯定的答案。
一、ASP的对象存取数据库方法
  在ASP中,用来存取数据库的对象统称ADO(Active Data Objects),主要含有三种对象:Connection、Recordset 、Command,其中Connection负责打开或连接数据库,Recordset负责存取数据表,Command负责对数据库执行行动查询(Action Query)命令和执行SQL Server的Stored Procedure。
二、连接数据库和打开数据表
  不同的数据库连接方法不一样(即建立Connection的实例方法不一样),一旦建立Connection实例完毕,利用Recordset对象进行存取数取数据的方法大同小异。
三、程序清单
四、实例(存取Excel数据表)
  为了更进一步说明这些函数的用法,本文给出一个存取Excel数据表的例子,其它函数的存取方法与此类似。
[NextPage]
一、ASP的对象存取数据库方法
  在ASP中,用来存取数据库的对象统称ADO(Active Data Objects),主要含有三种对象:Connection、Recordset 、Command,其中Connection负责打开或连接数据库,Recordset负责存取数据表,Command负责对数据库执行行动查询(Action Query)命令和执行SQL Server的Stored Procedure。只依靠这三个对象还是无法存取数据库的,还必须具有数据库存取的驱动程序:OLE DB驱动程序和ODBC驱动程序。对于任何一种数据库都必须有相对应的OLE DB驱动程序和ODBC驱动程序,ADO<才能对数据库进行存取。存取过程可用下图描述:
  由上图可知,ADO对象必须与各种驱动程序结合才能存取各种类型数据库,不同的数据库需要不同的驱动程序。究竟机器上已安装哪些驱动程序呢?可通过如下的方法来验证:Windows9X或NT的“开始”→“设置”→“控制面板”→“ODBC Data Source(32Bit)”中的“驱动程序”标签页查证我们的机器上究竟装了哪些驱动程序。大致有如下表所列的驱动程序:
<驱动程序
<适用数据库类型

Microsoft.Jet.OLEDB.4.0
Mdb

Microsoft Access Driver
Access

Microsoft dBase Driver
Dbase

Microsoft Excel Driver
Excel

Microsoft Visual FoxPro Driver
Dbc

SQLOLEDB.1
SQL Server7.0

二、连接数据库和打开数据表
  不同的数据库连接方法不一样(即建立Connection的实例方法不一样),一旦建立Connection实例完毕,利用Recordset对象进行存取数取数据的方法大同小异,下面对于不同的数据类型,编写了相对应的连接函数,其原型如下:
  1)Function CreatMdbRecordset( 数据库文件名, 数据表文件名或Select语句 );建立Mdb类型的数据库对象
  2)Function CreateSecuredMdbRecordset( 数据库文件名,数据表文件名或Select语句, 密码 );建立带密码的MDB类型的数据库对象;
  3)Function CreateDbfRecordset(目录名, DBF文件名或Select语句);建立DBF类型的数据库对象;
  4)Function CreateDbcRecordset(DBC数据库文件名, 数据表名或Select语句);建立DBC类型的数据库对象;
  5)Function CreateExcelRecordset(XLS文件名,Sheet名);建立Excel类型的数据库对象;
  6)Function CreateSQLServerRecordset(计算机名称,用户ID, 用户密码,数据库名称 数据表或查看表或Select指令 );建立SQL Server 类型的数据库对象;
[NextPage]
三、程序清单
'以下程序用VBScript编写
1)建立MdbRecordset对象,Mdb数据库是一个完整的数据库,内部可能含有若干个数据表,在此函数中,Connection的作用是连接数据库,Recordset的作用是打开数据表。
Function CreateMdbRecordset(数据库文件名, 数据表名或Select语句 )
Dim conn,Provider,DBPath
' 建立Connection 对象
Set conn = Server.CreateObject("ADODB.Connection")
Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
DBPath = "Data Source=" & Server.MapPath( "数据库文件名" )
'打开数据库
conn.Open Provider & DBPath
Set CreateMdbRecordset = Server.CreateObject("ADODB.Recordset")
' 打开数据表,参数二为Connection对象
CreateMdbRecordset.Open "数据表名", conn, 2, 2
End Function
2)建立带密码的Mdb数据库的Recordset对象,它的建立方式与建立不带密码的Mdb数据库的Recordset对象类似,只是多了一个密码参数,即在与数据库连接时,必须给出密码信息。
Function CreateSecuredMdbRecordset( 数据库文件名, 数据表名或Select语句,password )
Dim conn,Provider,DBPath
' 建立Connection 对象
Set conn = Server.CreateObject("ADODB.Connection")
Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
DBPath = "Data Source=" & Server.MapPath( "数据库文件名" )
' 连接数据库,注意下面一行带有密码参数
conn.Open Provider & DBPath&”Jet OLEDB:Database Password=”&assword
Set CreateSecuredMdbRecordset = Server.CreateObject("ADODB.Recordset")
' 打开数据表,参数二为Connection对象
CreateSecuredMdbRecordset.Open "数据表名", conn, 2, 2
End Function
3)DBF文件不是一个标准的数据库文件,只相当于标准数据库文件中的一个数据表,所以为了使用DBF文件,采用把所有的DBF文件放在一个目录下,这样把目录名看成标准数据中的数据库表,每一个DBF文件相当于标准数据库的数据表。下面函数中Directory是DBF所在的目录名,
Function CreateDbfRecordset( 目录名, DBF文件名或Select语句 )
Dim conn,Driver,SourceType,DBPath
' 建立Connection 对象
Set conn = Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Visual FoxPro Driver};"
SourceType = "SourceType=DBF;"
DBPath = "SourceDB=" & Server.MapPath( "目录名" )
' 调用Open 方法打开数据库
conn.Open Driver & SourceType & DBPath
Set CreateDbfRecordset = Server.CreateObject("ADODB.Recordset")
' 打开DBF文件,参数二为Connection对象
CreateDbfRecordset.Open DBF文件名或Select语句, conn, 2, 2
End Function
[NextPage]
四、实例(存取Excel数据表)
  为了更进一步说明这些函数的用法,本文给出一个存取Excel数据表的例子,其它函数的存取方法与此类似。假设有一个如图2的名为1.xls的Excel文件, 含有三个工作表一班、二班、三班。下面得用上面的函数存取工作表“一班”的数据。
图2
编写ASP文件(文件名为1.asp)存取此Excel中文件。
1.asp源代码
ASP文件 <%
' 建立Connection对象
Function CreateExcelRecordset(xlsfile,sheet)
Dim rs,conn,Driver,DBPath
Set conn = Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Excel Driver (*.xls)};"
DBPath = "DBQ=" & Server.MapPath( "xlsfile" )
' 调用Open 方法连接数据库
conn.Open Driver & DBPath
set CreateExcelRecordset = Server.CreateObject("ADODB.Recordset")
' 打开Sheet表,参数二'>Connection对象
CreateExcelRecordset.Open "Select * From ["&sheet&"$]",conn, 2, 2
End Function
%>
<HTML>
<BODY bgcolor="#FFFFFF">
<TABLE BORDER=1>
<TR BGCOLOR=#00FFFF>
<%
'本行是关键行,对函数的引用
' set rs=CreateExcelRecordset("1.xls","一班")
Part I输出“表头名称”且表头的背景的颜色为#00FFFF
' For i=0 to rs.Fields.Count-1
Response.Write "<TD>" & rs(i).Name & "</TD>"
Next
%>
</TR>
<%
' Part '>输出数据表的“内容”
rs.MoveFirst ' 将目前的数据记录移到第一项
While Not rs.EOF ' 判断是否过了最后一项
Row = "<TR>"
For i=0 to rs.Fields.Count-1
Row = Row & "<TD>" & rs(i) & "</TD>"
Next
Response.Write Row & "</TR>"
rs.MoveNext ' 移到下一项
Wend
%>
</TABLE></CENTER>
</BODY>
</HTML>
利用IE和PWS(Personal Web Server)后浏览结果如图3:
图3
参考文献:
[1]DataBase and the World Wide Web Marianne Winslett, University of Illinois
[2]http://www.aspobjects.com
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!