【问题标题】:Multiple Database connections within 1 application - VB .NET1 个应用程序中的多个数据库连接 - VB .NET
【发布时间】:2012-03-16 18:18:46
【问题描述】:

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

基本上,我正在开发一个允许用户在设计时构建查询的应用程序,即对于没有 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 等) 还是有什么方法可以为连接函数创建一个类,并在需要连接时简单地引用它们?

例如,我现在正在创建另一个子程序,它根据列表框中选择的表收集列,并将其显示回相关复选框中的主表单,再次连接到数据库,因此我需要执行所有的连接过程吗?

任何信息都会非常有用,谢谢!

【问题讨论】:

  • 阅读更多内容后,这是否适合称为“连接池”的东西?如果是这样,有人可以详细说明吗?

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


【解决方案1】:

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

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

【讨论】:

  • Erm.. 我不太确定您指的是什么。我正在用 Visual Basic .NET 开发一个程序 - 这是否不清楚,如果没有,请道歉。
  • 好吧,我现在明白你对连接池的解释了,我以为你第一次试图回答主要问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 2015-03-01
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多