0

我有这个子程序设置来连接到 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,但它不起作用。也许我需要退货?我不知道。

任何帮助表示赞赏,谢谢。

4

1 回答 1

0

问题是变量 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)

如果适合您的体系结构,还可以考虑从数据源的 app.config 文件中读取 MakeDBConnection 函数。

于 2010-01-26T22:28:02.620 回答