我有这个子程序设置来连接到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,但它不起作用。也许我需要回复一些东西?我不知道。
感谢任何帮助,谢谢。
答案 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函数。