用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
顯示結果: