VB.Net資料庫訪問

應用程式與資料庫進行通信,首先檢索存儲在資料庫中的數據,並以便於用戶使用的方式顯示;其次,通過插入,修改和刪除數據來更新資料庫中的數據。

Microsoft ActiveX Data Objects.Net(ADO.Net)是一個模型,是.NET應用程式用於檢索,訪問和更新數據的.Net框架的一部分。

ADO.Net對象模型

ADO.Net對象模型不過是通過各種組件的結構化流程流程。對象模型可以描述如下圖所示:

在數據存儲或資料庫中的數據通過數據提供者(DataProvider)檢索。數據提供者的各種組件檢索應用程式的數據並更新數據。

應用程式通過數據集或數據讀取器訪問數據。

  • 數據集(Datasets)將數據存儲在已斷開連接的緩存中,應用程式將從中檢索數據。
  • 數據讀取器(Data readers)以只讀和只進模式向應用程式提供數據。

數據提供者

數據提供者用於連接到資料庫,執行命令和檢索數據,將其存儲在數據集中,讀取檢索到的數據並更新資料庫。

ADO.Net中的數據提供者由以下四個對象組成:

編號 對象 描述
1 Connection 該組件用於與數據源建立連接。
2 Command 命令是用於檢索,插入,刪除或修改數據源中的數據的SQL語句或存儲過程。
3 DataReader 數據讀取器用於以只讀和只進模式從數據源檢索數據。
4 DataAdapter 這對ADO.Net的工作是不可或缺的,因為數據通過數據適配器傳輸到資料庫和從資料庫傳輸。它從資料庫檢索數據到數據集並更新資料庫。對數據集進行更改時,資料庫中的更改實際上是由數據適配器完成的。

ADO.Net中包含以下不同類型的數據提供程式 -

  • SQL Server的.Net Framework數據提供程式 - 提供對Microsoft SQL Server的訪問。
  • OLE DB的.Net Framework數據提供程式 - 提供對使用OLE DB公開的數據源的訪問。
  • 用於ODBC的.Net Framework數據提供程式 - 提供對由ODBC公開的數據源的訪問。
  • Oracle的.Net Framework數據提供程式 - 提供對Oracle數據源的訪問。
  • EntityClient提供者 - 允許通過實體數據模型(EDM)應用程式訪問數據。

數據集(DataSet)

數據集(DataSet)是數據的記憶體中表示。 它是從資料庫中檢索的一個斷開的,高速緩存的一組記錄。 與資料庫建立連接後,數據適配器將創建一個數據集並在其中存儲數據。 在數據被檢索並存儲在數據集中之後,與資料庫的連接被關閉。這被稱為“斷開連接的架構”。 該數據集作為包含表,行和列的虛擬資料庫運行。

下圖顯示了數據集對象模型:

DataSet類存在於System.Data命名空間中。下表介紹了DataSet的所有組件:

編號 組件 描述
1 DataTableCollection 它包含從數據源檢索的所有表。
2 DataRelationCollection 它包含數據集中表之間的關係和鏈接。
3 ExtendedProperties 它包含額外的資訊,如用於檢索數據的SQL語句,檢索時間等。
4 DataTable 它表示數據集DataTableCollection中的一個表。它是由DataRowDataColumn對象組成。DataTable對象區分大小寫。
5 DataRelation 它表示數據集DataRelationshipCollection中的關係。 它用於通過DataColumn對象將兩個DataTable對象相互關聯。
6 DataRowCollection 它包含DataTable中的所有行。
7 DataView 它代表一個DataTable的固定定制視圖,用於排序,過濾,搜索,編輯和導航。
8 PrimaryKey 它表示唯一標識DataTable中的行的列。
9 DataRow 它表示DataTable中的一行。 DataRow對象及其屬性和方法用於檢索,評估,插入,刪除和更新DataTable中的值。 NewRow方法用於創建新行,Add方法向表中添加一行。
10 DataColumnCollection 它代表DataTable中的所有列。
11 DataColumn 它由組成DataTable的列數組成。

連接到資料庫

.Net框架提供了兩種類型的連接類:

  • SqlConnection - 用於連接到Microsoft SQL Server。
  • OleDbConnection - 設計用於連接到各種資料庫,如Microsoft Access和Oracle。

示例1

在名為testDB的資料庫中有一個名為Customers的存儲在Microsoft SQL Server中的表。請參閱SQL Server教學在SQL Server中創建資料庫和數據庫表。

下麵演示如何連接到這個資料庫(假設已經創建好了一個名稱為:testdb 的資料庫),參考以下步驟:

  • 選擇工具 -> 連接到資料庫,如下圖所示 -

  • 在“添加連接”對話框中選擇一個伺服器名稱(這是裏:MY-PC)和數據庫名稱。如下圖所示 -

  • 點擊測試連接 按鈕,檢查連接是否成功。成功如下圖所示 -

  • 在窗體上添加一個DataGridView

  • 點擊選擇數據源組合框。沒有任何數據源的情況下如下所示 -

  • 在上圖中,點擊添加專案數據源鏈接。

  • 這將打開數據源配置嚮導。選擇資料庫 作為數據源類型。然後下一步 -

  • 選擇數據集作為資料庫模型。如下圖所示 -

  • 選擇已經建立的連接。如下圖所示 -

  • 保存連接字串。如下圖所示 -

  • 在這個示例中選擇資料庫對象customers表,然後單擊完成 按鈕。如下圖所示 -

  • 選擇預覽數據 鏈接以查看網格中的數據,如下圖所示 -

當使用Microsoft Visual Studio工具欄上的“開始”按鈕運行應用程式時,它將顯示以下窗口:

示例2

在這個例子中,將演示如何使用代碼訪問DataGridView控件中的數據(創建一個新的專案:DatabaseAccess2)。參考以下步驟:

  • 在窗體中添加一個DataGridView控件和一個按鈕。
  • 將按鈕控件的文本更改為“從資料庫表加載數據”

雙擊按鈕控件為按鈕的Click事件添加所需的代碼,如下所示:

Imports System.Data.SqlClient
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) _
    Handles MyBase.Load
        'TODO: This line of code loads data into the 'TestDBDataSet.CUSTOMERS' table.   You can move, or remove it, as needed.
        'Me.CUSTOMERSTableAdapter.Fill(Me.TestDBDataSet.CUSTOMERS)

        ' Set the caption bar text of the form.
        'Me.Text = "xuhuhu.com"
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim connection As SqlConnection = New SqlConnection()
        connection.ConnectionString = "Data Source=MY-PC;Initial Catalog=testdb;Integrated Security=True"
        connection.Open()
        Dim adp As SqlDataAdapter = New SqlDataAdapter _
        ("select * from customers", connection)
        Dim ds As DataSet = New DataSet()
        adp.Fill(ds)
        DataGridView1.DataSource = ds.Tables(0)
    End Sub
End Class

當上面的代碼執行並使用Microsoft Visual Studio工具欄上的“開始”按鈕運行時,它將顯示以下窗口:

單擊從資料庫表加載數據按鈕將顯示數據網格視圖控件上的表格:

創建表,列和行

前面我們已經討論過,像DataTableDataColumnDataRow這樣的DataSet組件可用於分別創建表,列和行。

以下示例3中演示了這個概念。

示例3

到目前為止,我們已經使用了電腦中已有的資料庫和表。 在這個例子中,將創建一個表,向其中添加列,行和數據,並使用DataGridView對象顯示該表結構和數據記錄。創建一個名稱為:DatabaseAccess3 的專案。

參考以下步驟:

  • 在窗體中添加一個DataGridView控件和一個按鈕。
  • 將按鈕控件的Text屬性值更改為“從資料庫表中加載數據”

在代碼編輯器中添加下麵的代碼。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' Set the caption bar text of the form.
        Me.Text = "從資料庫表中加載數據示例 - xuhuhu.com"
    End Sub

    Private Function CreateDataSet() As DataSet
        'creating a DataSet object for tables
        Dim dataset As DataSet = New DataSet()
        ' creating the student table
        Dim Students As DataTable = CreateStudentTable()
        dataset.Tables.Add(Students)
        Return dataset
    End Function

    Private Function CreateStudentTable() As DataTable
        Dim Students As DataTable
        Students = New DataTable("Student")
        ' adding columns
        AddNewColumn(Students, "System.Int32", "StudentID")
        AddNewColumn(Students, "System.String", "StudentName")
        AddNewColumn(Students, "System.String", "StudentCity")
        ' adding rows
        AddNewRow(Students, 1, "牛大大", "北京")
        AddNewRow(Students, 2, "張培勝", "上海")
        AddNewRow(Students, 3, "李喬森", "深圳")
        AddNewRow(Students, 4, "王小達", "廣州")
        AddNewRow(Students, 5, "Maxsu", "海口")
        Return Students
    End Function

    Private Sub AddNewColumn(ByRef table As DataTable,
    ByVal columnType As String, ByVal columnName As String)
        Dim column As DataColumn =
         table.Columns.Add(columnName, Type.GetType(columnType))
    End Sub

    'adding data into the table
    Private Sub AddNewRow(ByRef table As DataTable, ByRef id As Integer,
        ByRef name As String, ByRef city As String)

        Dim newrow As DataRow = table.NewRow()
        newrow("StudentID") = id
        newrow("StudentName") = name
        newrow("StudentCity") = city
        table.Rows.Add(newrow)
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim ds As New DataSet
        ds = CreateDataSet()
        DataGridView1.DataSource = ds.Tables("Student")
    End Sub
End Class

當上面的代碼執行並使用Microsoft Visual Studio工具欄上的“開始”按鈕運行時,它將顯示以下窗口:

單擊“從資料庫表中加載數據”按鈕將顯示數據網格視圖控件上的表格:


上一篇: VB.Net正則運算式 下一篇: VB.Net Excel工作表