vb.net应用程序对数据库的访问是通过ado.net来完成的。ADO.NET通过ODBC通道使用sql访问数据库。ADO.NET对数据库的访问可以简单的想象成三层处理模型。这三层及每层主要涉及的类如下所示:
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
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的联机文档。
学习数据库访问就是要熟悉这三层类的应用与关系。