Несколько подключений к базе данных в одном приложении - VB .NET - PullRequest
1 голос
/ 16 марта 2012

Возможно, на этот вопрос ответили, но мой поиск не нашел того, что я искал.

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

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

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

        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 и т. Д.), Или я могу создать класс для функций соединения и просто ссылаться на них всякий раз, когдаМне нужно подключиться?

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

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

1 Ответ

2 голосов
/ 16 марта 2012

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

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

...