子例程连接到MS Access数据库

时间:2010-01-26 22:17:04

标签: vb.net ms-access subroutine

我有这个子程序设置来连接到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 :(得分: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函数。