网页功能: 加入收藏 设为首页 网站搜索  
VB中远程数据库的访问
发表日期:2003-07-30作者:林晓[] 出处:  

  在VB中,用数据库引擎和数据访问对象DAO可以创建功能强大的客户/服务器应用程序。对远程数据库的访问是开发这类应用程序的关键,本文将介绍在VB中用DAO通过数据库引擎访问远程数据库的方法。

  用DAO访问远程数据库可以通过三步来实现,即数据连接、数据处理和断开连接。下面主要介绍数据连接和数据处理的具体操作。

  数据连接

  DAO通过链接远程表的方式来进行数据连接。这样,数据虽然驻留在远程数据源上,但在本地的数据库中可以存储与远程数据的永久性连接,同时缓存链接的表结构信息,从而在下一次访问该表时, 不用再次从服务器中检索这些结构信息,加快了连接速度。一旦链接了一个表,该链接便会保留在各会话期间,直到连接断开。链接远程表的具体操作是:

  用 OpenDatabase 方法打开将要包含该链接的本地数据库,用 CreateTableDef 方法在该数据库中创建一个新的TableDef对象,将 TableDef 对象的 Connect 属性设置为一个合法的连接字符串,标识要访问的远程数据库类型、数据文件的路径以及用户名和远程数据源密码等。将 TableDef 对象的 SourceTableName 属性设置为远程数据库中要访问的表的名称。 添加 TableDef 对象到 TableDefs 集合中。

  实现链接远程表操作的代码如下:

  Public Sub LinkTable(strDB As String, strRoDB As String, _

  strCn As String, strTdf As String, linkTdfName As String)

  Dim linkTdf As New TableDef

  Set dbs = OpenDatabase(strDB)

  linkTdf.Name = linkTdfName 100

  tempTable = UCase(linkTdf.Name)

  For i = 0 To dbs.TableDefs.Count - 1

    If UCase(dbs.TableDefs(i).Name) = tempTable Then

      If MsgBox(linkTdfName + " 已存在,是否删除 ?", _

      vbQuestion + vbYesNo) = vbYes Then

        dbs.TableDefs.Delete linkTdf.Name

        Exit For

      Else: MsgBox "重新输入新表名"

      linkTdfName = InputBox(" 新表名")

      GoTo 100

      End If

    End If

  Next i

Set linkTdf = dbs.CreateTableDef(linkTdfName)  '链接远程表

  linkTdf.Connect = ";database=" + strCn

  linkTdf.SourceTableName = strTdf

  dbs.TableDefs.Append linkTdf

End Sub

  上述过程用来实现远程表的连接,它有5个参数,其中strRoDB是要访问的远程数据库名(包括路径);strTdf 是该数据库中的表名;strDB 是要链接的本地数据库(包括路径);linkTdfName 是本地数据库的一个新表名,用来建立远程表的链接;strCn 是指定连接信息的字符串。需要特别注意的是,除了在访问远程 Microsoft Jet 数据库时,连接字符串要以分号(;)开头外,指定连接信息的字符串都必须以所访问的远程数据库类型开头。DAO可以访问的远程数据源有以下三类:

  Microsoft Jet 数据源,如:Access 数据。

  IISAM(可安装的索引化顺序访问方法)格式数据源,如:FoxPro、Paradox、dBASE 数据。

ODBC 数据源,如:SQL Server 数据、Oracle 数据。

  例如:设网络服务器名为server,共享目录为 C:\Sales 的 FoxPro数据库,连接字符串应为strCn="FoxPro3.0;database=\\server\c$\Sales\Region1"

  此外,DAO 通过 Microsoft Jet 数据库引擎访问远程数据时,还可以用 OpenDatabase 方法直接打开远程表。在本地数据库中并未存储与远程数据源建立连接所需要的信息。如果使用链接方式访问数据,则不必在每次会话开始时提供连接信息,从而可以提高效率。

  数据处理

  数据连接建立后,可以用 OpenRecordset 方法打开一个记录集,并可用 DBGrid 控件和 Data 控件方便地浏览整个记录集。如果使用表类型(Table-type)记录对象,则对应的是一个实际存在的数据库表,在多用户环境下,其它用户对数据的修改会立即反映到表中;如果使用动态集类型(Dynaset-type)记录对象,则对应的既可以是一个表中全部记录,又可以是一个查询的结果,并且可以更新记录集中的记录;如果使用快照类型(Snapshot-type)记录对象,则对应的可以是表中的全部记录,也可以是一个查询结果,但不能进行记录的增加、删除和修改操作。此外,还可以建立其它类型的记录对象,如仅向前型(ForwardOnly-type)记录对象和动态型(Dynamic-type)记录对象。

  下面是打开动态集记录对象并显示记录的代码:

Public Sub rst_display(strDB As String, strRst As String, strForm As Form)

  Set dbs = OpenDatabase(strDB)

  Set rst = dbs.OpenRecordset(strRst, dbOpenDynaset)

  strForm!Data1.DatabaseName = dbs.Name

  strForm!Data1.RecordSource = rst.Name

  strForm!Data1.Refresh

  strForm!DBGrid1.ReBind

End Sub

  上述过程有三个参数,其中 strDB 用来指定本地数据库名(包括路径),linkTdfName 是在本地数据库中新建的链接远程表的表名,strForm 是网格控件和数据控件所在的窗体名。调用此过程可以基于新表建立一个动态集类型的记录对象,并可在网格中浏览各个记录。

  断开连接可以通过关闭应用程序或设置连接超时来实现。注意:如果对数据库对象使用 Close方法,则由于在 Miscrosoft Jet 数据库引擎内部缓存了连接,实际上连接并未取消。 

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 VB中远程数据库的访问
本类热点文章
  在VB应用程序中调用Excel2000
  在VB中使用水晶报表的一种简易编程方法
  BOM表查询的VB实现方法
  如何將Excel的文件导入Access文件
  把DataGrid的数据快速写入EXCEL
  把DataGrid的数据快速写入EXCEL
  DataGrid 控件的使用
  ADO三大对象的属性、方法、事件及常数
  VB中DataCombo和DataList 控件的使用
  Visual Basic 导出到 Excel 提速之法
  Visual Basic 导出到 Excel 提速之法
  VB中MSHFlexGrid控件的应用
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00369