2012-03-16 80 views
1

這可能已經回答,但我的搜索沒有找到我正在尋找的東西。1應用程序內的多個數據庫連接 - VB .NET

基本上,我開發的應用程序,允許用戶建立在設計時的查詢,即用SQL的無前提知識的用戶

應用迄今允許用戶選擇哪個表(S)從他們希望開始查詢的數據庫(我現在不會進入其餘的細節)

我的困惑是這樣的;我已經在獲取模式信息,並對其過濾,只顯示數據庫,然後將數據彙總到一個列表框內的可用表的子程序與數據庫的連接,這裏是該子:

 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等)。 或者我有辦法創建一個類的連接函數,只需引用它們每當我需要連接?

例如,我現在正在根據列表框中選擇的表格創建另一個收集列的子集,並將其顯示回相關清單框中的主窗體中,再次連接到數據庫,因此我是否需要執行所有連接過程?

任何信息將是非常有用的,謝謝!

+0

閱讀更多內容後,這是否適合稱爲「連接池」?如果是這樣,有人可能會詳細說明嗎? – AdamWest 2012-03-16 18:26:01

回答

2

這是將DAL(數據訪問邏輯)與業務邏輯分開的標準方法。我肯定會創建一個單獨的類來連接數據庫並執行查詢,這會返回結果,然後您可以綁定到控件或在循環內迭代。

您甚至可能想要使用EF(實體框架)或我最喜歡的LINQ to SQL來幫助遵循標準設計模式。通過使用像EF或L2S這樣的框架,您可以利用它們緩存對象並返回強類型對象與鬆散類型對象的能力。強類型的對象爲您提供智能,並且不太容易出現常見錯誤,如拼錯數據表中的字段。

+0

呃..我不確定你指的是什麼。我在Visual Basic .NET中開發一個程序 - 這個問題沒有說清楚,如果沒有,我很抱歉。 – AdamWest 2012-03-16 20:30:42

+0

好吧,我現在明白你在解釋關於連接池的問題,我以爲你第一次嘗試回答主要問題。 – AdamWest 2012-03-16 20:32:06

相關問題