2010-09-07 91 views
1

我开始在数据库中放入我的应用程序,但是我在如何在我的一打或几个不同的表单之间共享数据库连接时留下了空白MDI应用程序。我假设这与接口或某事有关,但我无法在任何地方找到任何相关示例。有人可以帮我吗?理想情况下,我想要的是,当应用程序加载时,在表单加载区域中调用一个函数,该函数建立到mdb的单个连接,然后我可以通过任何形式调用,所以我并不总是必须每次我需要更新数据库时,打开/关闭连接(假设我建议更适合开销),除非这是更好的选择?vb.net - 在多个表单之间共享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

假设你创建你的启动形式的连接,那么你可以只添加构造函数的其他形式接受一个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当您需要它访问它。

+0

这解决了我的问题,谢谢! – Joe 2010-09-07 11:23:55