Подпрограмма для подключения к базе данных MS Access - PullRequest
0 голосов
/ 27 января 2010

У меня есть эта подпрограмма для подключения к базе данных MS Access:

Public Sub MakeDBConnection(ByVal source As String)
    Try
        cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & source & ";")
        cn.Open()
    Catch e As Exception
        ReportError("CRITICAL", e.Message)
    End Try
End Sub

Он находится в модуле, и любая функция, использующая его в модуле, с которым он работает, тем не менее, когда я пытаюсь использовать его из Main.vb (моя основная форма), кажется, ничего не делает, как любая Попытки выполнения SQL-запросов возвращаются с ошибкой, говорящей, что я должен инициализировать соединение.

Я попытался установить все переменные, которые он использует, в Public, но он не работает. Может мне что-то вернуть? Я не знаю.

Любая помощь приветствуется, спасибо.

1 Ответ

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

Проблема в том, что область действия переменной cn является локальной для Sub. Вы должны изменить это на Function и вернуть объект OleDbConnection. Таким образом, код будет выглядеть так:

Public Function MakeDBConnection(ByVal source As String) As OleDbConnection
    Try
        Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & source & ";")
        cn.Open()

        Return cn

    Catch e As Exception
        ReportError("CRITICAL", e.Message)
    End Try
End Function

Телефонный код будет выглядеть так:

' For example:
myOleDbCommand.Connection = MakeDBConnection(source)

Также рассмотрите возможность чтения функции MakeDBConnection из файла app.config для источника данных, если это соответствует вашей архитектуре.

...