Обращаемся за советом по разработке кода: работа с VB.Net и Ms-Access - PullRequest
0 голосов
/ 30 октября 2008

Возможно, наивно я создал класс (AdminDatabase) для обработки соединения с различными файлами базы данных MS-Access (см. Код внизу). Цель этого класса состояла в том, чтобы позволить извлекать данные из базы данных MS-Access и манипулировать данными. Это хорошо работает. Я могу передать экземпляру класса AdminDatabase оператор SQL и заполнить таблицу данных с результатом ( getDataTable метод в разделе code . Теперь я добавил наборы данных в проект, используя Visual Дизайнер данных студии.

Теперь я немного растерялся. Набор классов AdminDatabase - это строка подключения, когда пользователь выбрал соответствующий файл данных. Поскольку новые наборы данных также используют тот же параметр, My.Settings.AdminConnectionString для соединения, что приводит меня к моим вопросам:

  1. После создания экземпляра объекта AdminDatabase я могу предположить, что наборы данных, созданные мной с помощью дизайнера данных, подключатся к файлу базы данных MS-Access, выбранному пользователем во время выполнения?

  2. Должен ли я написать методы в своем классе соединений для доступа к данным в наборах данных, созданных с помощью конструктора данных, или прямой доступ к наборам данных будет нормальным? Я думаю, у меня мог бы быть где-нибудь метод, чтобы установить настройку строки соединения в проекте.

  3. Как еще я могу подойти к этому?

код


     public class AdminDatabase
       ' stores the connection string which is set in the New() method
       dim strAdminConnection as string

       public sub New()
       ...
       adminName = dlgopen.FileName
       conAdminDB = New OleDbConnection
       conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
           "Provider=Microsoft.ACE.OLEDB.12.0"

       ' store the connection string in strAdminConnection
       strAdminConnection = conAdminDB.ConnectionString.ToString()
       My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
       ...
       End Sub

       ' retrieves data from the database
       Public Function getDataTable(ByVal sqlStatement As String) As DataTable
            Dim ds As New DataSet
            Dim dt As New DataTable
            Dim da As New OleDbDataAdapter
            Dim localCon As New OleDbConnection


            localCon.ConnectionString = strAdminConnection

            Using localCon
                Dim command As OleDbCommand = localCon.CreateCommand()
                command.CommandText = sqlStatement
                localCon.Open()
                da.SelectCommand = command
                da.Fill(dt)
                getDataTable = dt
            End Using

        End Function
    End Class

1 Ответ

2 голосов
/ 30 октября 2008

Если вы используете строго типизированные наборы данных для возвратов, а не универсальный DataTable, я бы увидел, что это разные методы, возвращающие правильный набор данных для завершаемой операции.

Лично я больше не пользуюсь DataSets, поэтому я не уверен на 100%, есть ли более чистый способ сделать это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...