看VB.net視訊的時候涉及到了ADO.net的内容,總是感覺很熟悉,現在想起來這是我們在剛開始學習資料庫的時候再紅皮書上有介紹過ADO模型,這兩者有很多相似的地方。
ADO.net(AxtiveX Data Objects)是一組和資料源進行互動的面向對的的類庫一共包括6個。
他們之間有很多的相似,也有很多的不同。
連接配接和指令
兩者的Connection和Command很相似,在Connection中定義要打開的資料源的字元串,Command用來執行增删改查指令,将查到的結果傳回。Ado.net的Command有三種常用的方法,ExecuteReader()執行讀寫将Select的結果放在DataReader中、ExecuteScalar()可從相關的查詢中傳回第一行和第一列的值、ExecuteNonQuery()可以執行insert、delete、Update。
儲存傳回結果
傳回的結果在ADO模型和ADO.net中儲存的地方是不一樣的。在ADO模型中是放在RecordSet中然後對結果在進 行操作,而ADO.net放在DataReader或DataSet中。
那麼ADO.net的DataReader和DataSet的又有什麼差別呢。
DataReader它隻能夠快速的向下讀取Select語句得到的結果。而DataSet和RecordSet很相似,隻是RecordSet相當一隻表,DataSet是多個表集合,包含了多個DataTable,而DataTable就像一個普通的資料庫中的表,是以可以完成各種操作。還要注意DataSet是一個離線式的RecordSet,它能夠幫助管理在記憶體中的資料。
DateSet中的資料需要由DataAdapter進行填充,對每一個DataSet的Table都會定義一個DataAdapter。使用如下:(各使用的變量已經定義好)
Sql=”Select * From Table1” ‘定義SQL語句
Conn = newsqlConnection(strconn) ‘定義一個連接配接
Cmd= newSqlCommand(sql,Conn) ‘定義好一個指令
Dim Adataset As New DataSet '定義一個DataSet可以用來儲存查到的結果
Dim adaptor As SqlDataAdapter '用将查到的結果填到DataSet中
Dim adatatable As New DataTable '定義新的表,在DataSet中可以存放多張表
Conn.Open()
adaptor.Fill(Adataset, "set") '将結果填寫到DataSet中名為set的表中
adatatable = Adataset.Tables("set") '将結果以表的形式賦給定義的Table
Conn.Close()
Return adatatable <span style="font-family: Arial, Helvetica, sans-serif;">‘傳回表</span>