分享

建立到某个数据库的连接(VBA)

 jamb 2011-03-28

建立到某个数据库的连接(VBA)

[日期:2009-09-17] 来源:  作者: [字体: ]

 

RDO

要打开一个连接,您必须提供一个带参数的连接字符串。注意当 RDO 要创建一个 rdoQuery 对象时,是不需要连接的,但当最初创建一个 rdoResultset 对象时,则需要的:

Dim cn As New rdoConnection
Dim cnB As New rdoConnection
Const ConnectionString = "uid=myname;pwd=mypw;driver={SQLServer}; _
server=myserver;database=pubs;dsn=''"

该连接字符串访问一个特定的 SQL Server,并允许 ODBC 在没有 DSN 的情况下打开一个连接。这是一个带有所有标准参数的典型 ODBC 连接字符串。

下一节代码,在窗体的 Load 事件中,建立了游标驱动程序的类型以及登录超时。缺省情况下,RDO 使用 rdUseIfNeeded 游标类型,该类型调用 SQL Server 上服务器端的游标。下面的示例中指定了 rdUseNone,从而使这种缺省规定不被遵守。rdDriverNoPrompt 标志意味着如果用户ID 和密码不匹配,应用程序将产生一个错误。

Private Sub Form_Load()
With cn
cn.Connect = ConnectString
cn.LoginTimeout = 10
cn.CursorDriver = rdUseNone
cn.EstablishConnection rdDriverNoPrompt
End With

第二个连接执行任何客户批处理更新:

   With cnB
cnB.Connect = ConnectString
cnB.CursorDriver = rdUseClientBatch
cnB.EstablishConnection
End With
End Sub

当连接操作完成时最后一个事件发生,并且它能够对连接打开时所出现的任何错误进行处理。可以用该事件来测试连接是否正常工作,如果能正常工作,则使任何依赖于打开连接的按钮都成为有效的。

Private Sub cn_Connect(ByVal ErrorOccurred As Boolean)
If ErrorOccurred Then
MsgBox "Could not open connection", vbCritical
Else
RunOKFrame.Enabled = True
End If
End Sub

ADO

要在 ADO 中建立一个数据库连接,首先创建一组可被 ADODB 对象引用的 ADO 对象。这些对象将在以后用于设置打开连接和generate结果集的特定属性:

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cnB As New ADODB.Connection
Dim Qy As New ADODB.Command

下一行创建了一个连接字符串,正如您在前一个 RDO 示例中所创建的那样。在两种情况下,您都使用 ODBC 的 “非-DSN” 连接策略以节省时间,并提高性能:

Const ConnectionString = "uid=myname;pwd=mypw;driver={SQL Server}; _
server=myserver;database=pubs;dsn=",,connection=adConnectAsync"
下面的声明对本示例中用到的变量进行初始化。(注意一个保存结果集的变量数组的创建):
Dim sql As String
Dim rc As Integer
Dim i As Integer
Dim Changes As Integer
Dim bms() As Variant

下一步,打开一个到 Form_Load 事件中某个数据库的 ADO 连接。注意该代码和 RDO 代码是很相似的,只不过常数是以 "ad" 开始的,而不是 "rd"。如果要看到所有可以使用的常数,请查看 ADODB 类型库。

注意 不需要指定提示行为,因为 ADO 的缺省设置为“无提示”。不过,如果您选择对之进行更改,则可以使用 ADO Properties 集合来处理希望的提示行为。在 RDO 中,您可以用 OpenConnection 参数来设置行为。在 ADO 中,您必须设置 Properties ("Prompt") 属性。

同时,如果您不想使用游标驱动程序,则不必对其进行指定(象在 RDO 中的CursorDriver = rdUseNone),因为 ADO 的缺省规定是无游标驱动程序。

Private Sub Form_Load()
With cn
' 建立非 DSN 连接
      .ConnectionString = ConnectString
      .ConnectionTimeout = 10
      '.Properties("Prompt") = adPromptNever 
      ' This is the default prompting mode in ADO.
      .Open
   End With
   With cnB
      .ConnectionString = ConnectString
      .CursorLocation = adUseClient
      .Open
   End With
End Sub


和四十万excel用户一起学习excel,数千名excel高手义务帮你在线解答excel和VBA问题,欢迎到excel精英论坛做客!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多