2012-03-16 5 views
1

Возможно, это был ответ, но мой поиск не нашел того, что я искал.Несколько соединений с базой данных в одном приложении - VB .NET

В принципе, я разрабатываю приложение, которое позволяет пользователю создать запрос на этапе проектирования, то есть для пользователей, не обязательного условия знания SQL

Применения до сих пор позволяет пользователю выбрать, какую таблицу (ы) из базы данных, с которой они хотят начать запрос (пока я не буду вдаваться в подробности остатка)

Мое замешательство в этом; У меня уже есть подключение к базе данных в подпрограмму, которая получает информацию о схеме и фильтрует его, чтобы отобразить только доступные таблицы в базе данных, которая затем собирает данные в ListBox, в том, что к югу:

 Public Sub getSchemaInfo() 
    Dim ds As New DataSet 
    Dim dt As New DataTable 
    Dim con As New OleDbConnection 
    Dim strDatabaseLocation As String = Application.StartupPath 
    Dim da As New OleDbDataAdapter 
    Dim i As Integer 

    'ds.Tables.Add(dt) 


    con.ConnectionString = "Provider=microsoft.jet.oledb.4.0; data source = " & strDatabaseLocation & _ 
                "\EmployeeDepartment.mdb" 
    'clear listbox of any data first 
    frmAddTable.lbTables.Items.Clear() 

    'Try catch block used to handle connection errors gracefully 
    Try 
     con.Open() 
     'Accessing methods to obtain schema information 
     dt = con.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() _ 
            {Nothing, Nothing, Nothing, "TABLE"}) 

     'loop datatable to store schema information within it 
     For i = 0 To dt.Rows.Count - 1 

      'compile lbtables with a list of available tables from the database 
      frmAddTable.lbTables.Items.Add(dt.Rows(i)!TABLE_NAME.ToString()) 


     Next 


    Catch ex As Exception 
     MessageBox.Show(ex.Message.ToString(), "Data Load Error", MessageBoxButtons.OK, 
         MessageBoxIcon.Exclamation) 
    End Try 

    con.Close() 

Как вы можете видеть, на самом верху находится вся информация о подключении к базе данных и загрузке информации в набор данных.

Мой вопрос в том, что; Всякий раз, когда мне нужно получить доступ к базе данных и любой информации в ней, я должен выполнить весь процесс подключения (oledbconnection и т. Д.) или есть ли способ, которым я могу создать класс для функций подключения и просто ссылаться на них когда мне нужно подключиться?

Например, теперь я создаю еще одну подсистему, которая собирает столбцы на основе таблиц, выбранных в списке, и отображает их обратно в основную форму в соответствующем контрольном списке, опять же, подключение к базе данных , поэтому мне нужно было бы выполнить все процессы соединения?

Любая информация была бы очень полезной, спасибо!

+0

Прочитав больше, будет ли это соответствовать чему-то, что называется «Пул соединений»? Если да, может ли кто-нибудь уточнить, возможно? – AdamWest

ответ

2

Это стандартный подход для разделения вашей DAL (логики доступа к данным) из вашей бизнес-логики. Я определенно создаю отдельный класс для подключения к базе данных и выполнения запросов, которые возвратят результаты, которые вы можете затем привязать к элементу управления или перебрать внутри цикла.

Возможно, вы даже захотите изучить использование EF (Entity Framework) или моего любимого LINQ to SQL, чтобы помочь вам следовать стандартным шаблонам проектирования. Используя фреймворк, например EF или L2S, вы можете использовать свою способность кэшировать объекты и возвращать сильно типизированные объекты по сравнению с слабо типизированными. Сильно типизированные объекты дают вам intelisense и менее склонны к распространенным ошибкам, например, орфографированию поля из DataTable.

+0

Erm .. Я не совсем уверен, что вы имеете в виду. Я разрабатываю программу в Visual Basic .NET. Разве это не было ясно, извинения, если нет. – AdamWest

+0

Ну, теперь я понимаю, что вы объясняете о пуле соединений, я думал, что вы пытаетесь ответить на первый вопрос в первый раз. – AdamWest

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