2010-09-07 4 views
1

Я начинаю вставлять базу данных в свое приложение, однако я рисую пробел о том, как разделить соединение с базой данных между дюжинами разных форм в моем Приложение MDI. Я предполагаю, что это связано с интерфейсами или чем-то другим, но я нигде не могу найти подходящих примеров. Кто-нибудь может мне помочь? В идеальном случае, когда приложение загружается, есть вызов функции в области загрузки форм, которая устанавливает одно соединение с mdb, которое затем я могу вызвать через любую форму, поэтому мне не всегда приходится открывать/закрывать соединения каждый раз, когда мне нужно обновить db (предполагая, что я предлагаю лучше для накладных расходов), если это не лучший вариант?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

Смежные вопросы