繁体   English   中英

vb.net-在多种形式之间共享mdb访问连接

[英]vb.net - sharing mdb access connection among multiple forms

我开始将数据库放入我的应用程序中,但是在如何在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

假设您在启动表单中创建了连接,则只需将构造函数添加到接受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来访问它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM