代码之家  ›  专栏  ›  技术社区  ›  Azim J

询问代码设计建议:使用VB.NET和MS Access

  •  -1
  • Azim J  · 技术社区  · 16 年前

    也许是天真的,我创建了一个类(admindatabase)来处理与不同MS Access数据库文件的连接(参见底部的代码)。该类的目的是允许从MS Access数据库中检索数据并操作数据。这很管用。我可以向AdminDatabase类的一个实例提供一条SQL语句,并用结果填充一个数据表。( 获取数据 方法在 代码 部分。现在,我已经使用Visual Studio的数据设计器向项目添加了数据集。

    现在我有点困惑。一旦用户选择了相关的数据文件,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 回复  |  直到 16 年前
        1
  •  2
  •   Mitchel Sellers    16 年前

    如果您使用的是用于返回的强类型数据集而不是通用数据表,那么我将把它们看作是不同的方法,为正在完成的操作返回正确的数据集。

    我个人不再使用数据集了,所以我不能百分之百地确定是否有一种更清洁的方法…