1个应用程序中的多个数据库连接 - VB .NET

时间:2012-03-16 18:18:46

标签: sql vb.net visual-studio-2010 oledb

这可能已经得到解答,但我的搜索还没有找到我要找的东西。

基本上,我正在开发一个允许用户在设计时构建查询的应用程序,即对于没有SQL必备知识的用户

到目前为止,应用程序允许用户从他们希望开始查询的数据库中选择哪些表(我现在不会详细介绍其余的)

我的困惑是这样的;我已经在子程序中连接到数据库,该子程序获取模式信息并过滤它以仅显示数据库中的可用表,然后将数据编译到列表框中,这是sub:

        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 个答案:

答案 0 :(得分:2)

这是将DAL(数据访问逻辑)与业务逻辑分离的标准方法。我肯定会创建一个单独的类来连接数据库并执行可以带回结果的查询,然后可以绑定到控件或在循环内迭代。

您甚至可能希望使用EF(实体框架)或我最喜欢的LINQ to SQL来帮助遵循标准设计模式。通过使用像EF或L2S这样的框架,您可以利用它们缓存对象的能力并返回强类型对象而不是松散类型。强类型对象为您提供智能感知,并且不太容易出现像DataTable中拼写字段的常见错误。