科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用VB和RDO访问SQL SERVER

用VB和RDO访问SQL SERVER

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

远程数据对象 (Remote Data Object ,简称RDO) 是位于 ODBC API 之上的一个对象模型薄层。

作者:佚名 来源:论坛 2007年10月23日

关键字: SQL Server

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共5页)

实例

  在本系列文章的上篇刊文中,我们介绍了RDO的发展、优势、对象模块、趋势,以及通过RDO与SQL Server的连接和断开等内容,本期将通过实例来介绍RDO的应用。

  OpenConnection方法的调用方式如下:

   [调用方式:OpenConnection(dsName, Prompt, ReadOnly, Connect)]

  其中参数说明如下:

   dsName,指定登录在系统中的DSN条目。当用Connect参数指定DSN值时,dsName必须为“”(长度为0的文字列)。

   Prompt,当设置为rdDriverPrompt常数时,可以在不能与SQL Server连接的情况下,激活ODBC设置对话框来设定DSN。只是最好不要让一般用户随意更改这个设定。通常情况下,正确的处理方法是设定为rdDriverNoPrompt,利用Error处理程序编程进行处理。

   ReadOnly,若需要通过连接对数据进行更新时设定为False。若没有数据更新的必要则设为True,这时因为ODBC驱动没有对数据更新进行管理的需要,可以提高程序效率。

   Connect,向ODBC驱动管理器传递所有的ODBC连接参数。可以省略dsName,只通过Co nnect参数进行包括用户名、口令、缺省数据库、DSN(此时dsName参数的值无效)等全部参数值的传递。

  下面是OpenConnection方法的一个实例。

  设定的DSN为MyDSN:

Dim Cn As rdoConnection
Dim En As rdoEnvironment
Dim Conn As String
Conn = “DSN = MyDSN; UID = Jacob;” & “PWD = 123456; DATABASE = MyDb;”
Set Cn = En.OpenConnection(“”, rdDriverPrompt, False, Conn)

  在这个例子中,dsName是空 “”(长度为0的文字列)。DSN情报从Conn参数中所含的DSN = MyDSN取得。
OpenConnection方法中也可以通过变量来进行参数传递:

[变量名:=值]
Set Cn = En.OpenConnection(Prompt := rdDriverPrompt, ReadOnly := False, Conn ect := Cnn)

  虽然这多少有一些多余的代码,但毫无疑问会使程序维护工作容易得多。

  EstablishConnection方法

  EstablishConnection方法的调用方式如下:

  调用方式:EstablishConnection(Prompt, ReadOnly, Connect)

  本文前面对独立(stand alone)的连接对象(rdoConnection)作了说明,EstablishCon nection方法可以用于这种情况。EstablishConnection方法同OpenConnection方法很相似,被用于停止状态或独立的rdoConnection对象。

  这里以独立的rdoConnection对象为例说明与SQL Server的连接。

Public WithEvents Eng As rdoEngine
Public WithEvents Cn As rdoConnection
 
Private Sub Form_Load()
Set Eng = New rdoEngine
Set Cn = New rdoConnection
With Cn
.Connect = “UID = ; PWD = ;” & “DATABASE = pubs; DSN = biblio”
.LoginTimeout = 5
.EstablishConnection rdoDriverNoPromt, True, rdAsyncEnable
End With
End Sub

  在这个例子中,Form_Load函数对rdoEngine和rdoConnection对象进行初始化。这里有一点需要注意,rdoConnection对象是处于独立的状态之下,即使是处于未连接状态也可以设置属性的值。

  接下来是rdoConnect对象的事件处理程序。从RDO 2.0起可以实现异步方式(rdAsyncEn able),EstablishConnection就设定为该值。在异步状态下,不必等待与数据库的连接,程序可以迅速从Form_Load函数中退出。

  然后是BeforeConnect事件,该处理在与数据库的连接开始以前被激发,此时不能进行有关终止连接的操作:

Private Sub Cn_BeforeConnect(ConnetString As String, Prompt As Variant)
MsgBox “正在连接” & ConnectString, vbOKOnly, “连接前”
End Sub

  连接完成之后的事件处理:

Private Sub Cn_Connect(ByVal ErrorOccurred As Boolean)
Dim M As String
If ErrorOccurred Then
For Each er In rdoErrors
M = M & er & vbCrLf & M
Next
MsgBox “连接失败” & vbCrLf & M
Else
MsgBox “连接成功”
'这是确认连接状态的测试代码
Cn.Excute “use pubs”
End Sub

  RDO连接处理结束后,在该事件中确认连接成功与否。连接成功的情况下ErrorOccurred 返回False,失败时为True,由此可以对rdoErrors集合进行检测:

Private Sub Eng_InfoMessage()
For Each er In rdoErrors
Debug.Print er
Next
RdoErrors.Clear
End Sub

  不能与SQL Server连接的原因多种多样,有可能是由于对数据库的访问权限、网络连接问题、数据库表的信息错误、SQL Server同时连接的许可数、资源不足等等,具体情况需要与网络管理员商量。

  断开连接的操作非常简单,但又很重要,因为RDO不提供自动断开的功能。

Cn.Close
Set Cn = Nothing '释放对象所占的内存资源
En.Close
Set En = Nothing '释放对象所占的内存资源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章