【问题标题】:Connecting to a MS Access database through a function通过函数连接到 MS Access 数据库
【发布时间】:2011-01-10 02:26:44
【问题描述】:

这是我的功能:

Public Function DBConnection(ByVal path As String)
    ' This function makes the database connection and returns the object
    ' to reference it.
    cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + path + ";")
    cn.Open()
    Return cn
End Function

如您所见,我想初始化一个数据库连接并将其返回,以便在我的表单中使用它。这个函数在一个模块中,我的变量如下:

Public cn As OleDbConnection
Public cmd As OleDbCommand
Public dr As OleDbDataReader

但我不确定如何在我的表单中使用它,我是否只调用函数DBConnection 然后继续执行我的 SQL 语句?还是我必须做其他事情?非常感谢您的帮助,干杯。

另外,我需要一些意见。我的应用程序依赖于 MS Access 数据库。是在Form_Load 上初始化连接,然后在用户关闭程序时关闭连接,还是在运行查询时打开和关闭连接?我计划在多个表单上使用一些数据库查询,因此我将其放入模块中,但我并不是 100% 知道应该如何进行。

谢谢。

【问题讨论】:

  • 您的客户端应用程序是 .NET 应用程序还是单独的访问应用程序?

标签: database vb.net ms-access vba module


【解决方案1】:

几件事。每次调用该函数时都会打开一个连接。您最好确保同时关闭数据库,否则会开始占用内存。

您可能会查看其他一些选项(例如使用 NHibernate 或其他 ORM。)

但是,如果您继续使用此模型,则可以使用返回的 cn 访问您的数据库。

【讨论】:

  • 感谢您的回答,这个函数只会在程序中调用一次,在Form_Load。当我使用返回的 cn 时,我是否只是以正常方式使用它?就像当我想运行查询时,我只使用 cmd = New OleDbCommand("blah")?
  • 是的,您只需使用 cn,而不是创建新连接,因此需要使用 cn.Query() 或任何您需要使用的函数调用。
【解决方案2】:

发件人:How to bind Microsoft Access forms to ADO recordsets

Private Sub Form_Open(Cancel As Integer)
   Dim cn As ADODB.Connection
   Dim rs As ADODB.Recordset

   'Use the ADO connection that Access uses
   Set cn = CurrentProject.AccessConnection

   'Create an instance of the ADO Recordset class, and
   'set its properties
   Set rs = New ADODB.Recordset
   With rs
      Set .ActiveConnection = cn
      .Source = "SELECT * FROM Customers"
      .LockType = adLockOptimistic
      .CursorType = adOpenKeyset
      .Open 
   End With

   'Set the form's Recordset property to the ADO recordset
   Set Me.Recordset = rs

   Set rs = Nothing
   Set cn = Nothing
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 2018-01-30
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2017-04-01
    相关资源
    最近更新 更多