vb.net - 在多个表单之间共享mdb访问连接

时间:2010-09-07 07:45:23

标签: vb.net

我开始在我的应用程序中放入一个数据库,但是我在如何在我的MDI应用程序中的十几个不同表单之间共享数据库连接上画了一个空白。我假设这与接口或其他东西有关,但我无法在任何地方找到任何相关的例子。有人可以帮我吗?理想情况下我想要的是当应用程序加载时,在表单加载区域中调用一个函数,该函数建立与mdb的单个连接,然后我可以通过任何表单调用,所以我并不总是需要每次我需要更新数据库时打开/关闭连接(假设我建议的开销更好),除非这是一个更好的选择?

这是我工作的mdb数据库访问代码的基本示例:

    Dim dt As DataTable = New DataTable()
    Dim OleDbTran As OleDbTransaction = Nothing

    Using connJET As OleDbConnection = New OleDbConnection("connection string here...")
        Try
            connJET.Open()
            Dim sqlCount As OleDbCommand = New OleDbCommand("select * from mytable", connJET)
            Using aReader As OleDbDataReader = sqlCount.ExecuteReader()
                dt.Load(aReader)
            End Using

            If (dt.Rows.Count > 0) Then
                MsgBox(dt.Rows.Count)
            End If

            OleDbTran = connJET.BeginTransaction()
            Dim aCommand As OleDbCommand = connJET.CreateCommand()
            aCommand.CommandText = "INSERT INTO Programs (title) VALUES (@title)"
            aCommand.Transaction = OleDbTran

            aCommand.Parameters.Add("@title", OleDbType.VarChar)
            aCommand.Parameters("@title").Value = "Test"

            aCommand.ExecuteNonQuery()
            OleDbTran.Commit()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Using

1 个答案:

答案 0 :(得分:1)

假设您在启动表单中创建了连接,那么您可以将构造函数添加到接受SqlConnection的其他表单中,并在您创建该表单的实例时将其发送。

或者,如果您愿意,可以创建以下内容:

Public Class Connection
    Private Shared connection As OleDb.OleDbConnection

    Public Shared ReadOnly Property Instance As OleDb.OleDbConnection
        Get
            If connection Is Nothing Then
                connection = New OleDb.OleDbConnection("connstring")
            End If
            Return connection
        End Get
    End Property
End Class

然后,您只需在需要时拨打Connection.Instance即可访问它。