Подключение к базе данных MS Access через функцию - PullRequest
1 голос
/ 27 января 2010

Это моя функция:

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% уверен в том, как мне поступить.

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 января 2010

От: 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
0 голосов
/ 27 января 2010

Пара вещей. Эта функция будет открывать соединение каждый раз, когда она вызывается. Вам лучше убедиться, что вы также закрываете базу данных, иначе это начнет расходовать память.

Вы можете посмотреть другие варианты (например, использовать NHibernate или другой ORM.)

Однако, если вы останетесь с этой моделью, вы можете использовать cn, который возвращается для доступа к вашей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...