用vb6.0编写收费系统,用的是ADODB(Active Data Objects Data Base)+Recordset,而在vb.net中用的是SqldataAdapter、SqldataReadr、Dataset和Datatable,刚刚写第二遍收费系统时,对这几个概念模糊,也能反映出当时的浮躁和对新知识接受能力的不足。下面先了解一下常用方法、属性。
SqlDataAdapter
如果只需要执行SQL语句,就没必要用到DataAdapter, 直接用SqlCommand的Execute系列方法就可以了。sqlDataadapter的作用是实现Dataset和DataBase之间的桥梁。
首先介绍一下常用的构造、方法和属性(需要先引用System.Data.SqlClient)
常用的方法
Fill
Fill方法的作用是将数据库中的数据填充到dataset。例如:
Dim ds As New DataSet '定义一个dataset
Dim da As New SqlDataAdapter '定义一个sqldataadapter
'填充dataset
da.Fill(ds, "User_info")
Update
Update方法的作用是将dataset里面的数据更新到数据库。例如:
Dim ds As New DataSet '定义一个dataset
Dim da As New SqlDataAdapter '定义一个sqldataadapter
'更新dataset
da.Update(ds, "User_info")
DataSet
可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet 由一组 DataTable 对象组成。
Dim ds As New DataSet '定义一个dataset
ds.Tables.Add(dt) '向dataset中添加datatabele
DataTable
是一个临时保存数据的网格虚拟表,可以用来存储数据。例如:在窗体上拖放一个DataGridView控件,在button1写写代码:
Dim dt As New DataTable() '定义一个datatabele
dt.Columns.Add("卡号") '添加字段“卡号”
dt.Columns.Add("姓名") '添加字段“姓名”
dt.Columns.Add("学号") '添加字段“学号”
dt.Columns.Add("老师") '添加字段“老师”
dt.Rows.Add("10001", "jain", "0905024", "mi") '向datatabele中写数据行
需要注意的是,datatabele需要先添加列才能添加行,我的理解是相当于在数据库表中先添加字段,才能输入数据。
效果如下:
SqldataReader
sqldatareader 是一种获取数据库数据的一种方法,获取的数据只读。并且它需要与sqlCommand连用,最常见的使用方法:
Dim ConnString As String = _
"Data Source=192.168.24.158;Initial Catalog=CR_Charge_SYS;Persist Security Info=True;User ID=sa;Password=123456"
Dim sqltxt As String = "select * from User_info" '定义sql语句
Dim sqlconn As New SqlConnection(ConnString) '定义连接
Dim sqlcmd As New SqlCommand(sqltxt, sqlconn) '定义sqlCommand
Dim userReader As SqlDataReader '定义sqldatareader
Try
sqlconn.Open() '打开连接
userReader = sqlcmd.ExecuteReader '生成sqldatareader
userReader.Read() '读取数据
MsgBox(userReader.Item(3)) '显示读取的第四个数据
userReader.Close() '关闭阅读
Catch ex As Exception
MsgBox(ex.Message)
Finally
sqlcmd.Dispose() ' 释放sqlCommand
End Try
这样就能达到最简单的数据读取操作,需要注意的是使用sqldatareader,需要先打开数据库连接,才能生成sqldatareader,并且需要.read()后才能获取数据。
下面以获取整个数据库中某个表的数据为例,将sqldatareader、sqldataadapter、datatabele和dataset同时使用。代码:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim ConnString As String = _
"Data Source=192.168.24.158;Initial Catalog=CR_Charge_SYS;Persist Security Info=True;User ID=sa;Password=123456"
Dim sqltxt As String = "select * from User_info" '定义sql语句
Dim sqlconn As New SqlConnection(ConnString) '定义连接
Dim sqlcmd As New SqlCommand(sqltxt, sqlconn) '定义sqlCommand
Dim da As New SqlDataAdapter(sqlcmd) '定义sqldataadapter并于sqlcommand连接
Dim ds As New DataSet
Dim userReader As SqlDataReader '定义sqldatareader
Try
sqlconn.Open() '打开连接
userReader = sqlcmd.ExecuteReader '生成sqldatareader
userReader.Read() '读取数据
MsgBox(userReader.Item(3)) '显示读取的第四个数据
userReader.Close() '关闭阅读
da.Fill(ds, "Userinfo")
DataGridView1.DataSource = ds.Tables("Userinfo")
Catch ex As Exception
MsgBox(ex.Message)
Finally
sqlcmd.Dispose() ' 释放sqlCommand
End Try
End Sub
显示结果: