摘要:

  本文讨论利用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。只依靠这三个对象还是无法存取数据库的,还必须具备数据库存取的驱动程式:OLE DB驱动程式和ODBC驱动程式。对于任何一种数据库都必须有相对应的OLE DB驱动程式和ODBC驱动程式,ADO〈才能对数据库进行存取。存取过程可用下图描述:

〈p align="center"〉〈img src="http://tech.china.com/zh_cn/netschool/homepage/asp/606/20010814/images/10079488_11428.gif"〉〈/p〉
  由上图可知,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 类型的数据库对象;


  三、程式清单

  ‘以下程式用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所在的目录名,

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!