vb.net應用程式對資料庫的訪問是通過ado.net來完成的。ADO.NET通過ODBC通道使用SQL訪問資料庫。ADO.NET對資料庫的訪問可以簡單的想象成三層處理模型。這三層及每層主要涉及的類如下所示:
1、建立到資料庫的連結
2、通過連結執行SQL語句
3、資料可用的時候,處理SQL語句返回的資料。
層次 |
類名 |
對應在System.Data.OleDb命名空間中的類名 |
對應在System.Data.SqlClient命名空間中的類名 |
1 |
Connection |
OleDbConnection |
SqlConnection |
2 |
DataAdapter |
OleDbDataAdapter |
SqlDataAdapter |
Command |
OleDbCommand |
SqlCommand |
3 |
DataReader |
OleDbDataReader |
SqlDataReader |
System.Data中的DataSet |
DataSet |
DataSet |
訪問不同的資料來源可以引用不同的命名空間,然後使用該空間下相應的ADO.NET中的類,如訪問SQL Server可以使用SqlConnection進行連結。
當我們進行連結時要設定ConnectionString屬性進行連結,其中要使用到資料來源提供者的名字一項,例如sqlCnn.ConnectionString = " data source=SQLOLEDB;SERVER=DongZi/sqlExpress;uid=sa;pwd=123;database=MachineRoom"
中的Data Source=SQLOLEDB就是.NET平台中SQL Server資料來源提供者的名稱。總之,我們在使用不同資料庫時要找到相應的資料來源提供者在.NET中的名稱,然後在設定ConnectionString就可以了。
下面利用SqlConnection、SqlDataAdapter等類做一個擷取DbStuRegister資料表中的列的數量的一個Demo。
Imports System.Data
Imports System.Data.SqlClient
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sqlCnn As New SqlConnection
Dim sqlAd As New SqlDataAdapter
Dim MyDataSet As New DataSet
Dim Tab As New DataTable
Dim sqlCM As New SqlCommand
sqlCnn.ConnectionString = " data source=SQLOLEDB;SERVER=DongZi/sqlExpress;uid=sa;pwd=123;database=MachineRoom"
sqlCnn.Open()
sqlCM.CommandText = "select * from DbStuRegister"
sqlAd.SelectCommand = sqlCM
sqlAd.SelectCommand.Connection = sqlCnn
sqlAd.Fill(MyDataSet)
Tab = MyDataSet.Tables(0)
txtCardNo.Text = Tab.Columns.Count
End Sub
End Class
DataAdapter的用法見.NET的聯機文檔。
學習資料庫訪問就是要熟悉這三層類的應用與關係。