ADO.NET 是微軟的 .NET FrameWork中所包含的一組類 ,可以提供應用程式與資料庫進行 通信 。
在以前的 資料庫通路技術中,對于資料庫的操作必須是在有連接配接的環境中,應用程式需要和資料源保持持續的連結 ,伸縮性和可擴充性比較差,占用資源也是比較多的 、
但是在ADO.NET中解決了這個問題 ,保證我們在 無連接配接的環境下也可以進行資料庫的操作 。
原理是這樣:使用者可以将資料源的子集下載下傳到本地中,然後對本地的資料子集進行 操作,操作完之後 在連接配接到 網絡 .并且更新子集到資料庫 ,這樣就完成了 所謂的無連接配接資料庫通路 。
ADO.NET 的2個核心的元件是 DataSet 和 .NET 資料提供程式 , .
DataSet 稍後介紹
.NET 資料提供程式不盡相同 有 SQL Server .NET資料提供程式 ODBC .NET 資料提供程式 OLE DB .NET 資料提供程式 Oracle .NET資料提供程式等等 、、
ADO.NET 通路資料流流程
1、與資料庫的連結通過 SqlConnection類 在進行資料庫的操作的時候 ,我們必須建立起和資料庫的連結
SqlConnection類的執行個體表示了一個應用程式 和資料庫隻見的連結 ,很多語言通路資料庫第一步都是這樣 ,比如JDBC通路資料庫中 擷取一個 Connection對象一個 樣 .
Dim str as new String="Data Source=.\SQLEXPRESS;Initial Catalog=MyDB;Persist Security Info=True;User ID=sa;Password=1243"
Dim cn as new SqlConnection
cn.ConnectionString=str //對 連接配接字元串進行指派 我們也可以在構造 SqlConnection的時候進行初始化
cn.open() //打開一個資料庫 在建立了和資料庫的連接配接之後 那麼我們就要可以打開一個資料庫
2. 通過 SqlCommand對象來執行 SQL語句
這個類有三個 執行SQL語句的方法 每個方法含義不同
ExecuteReader 傳回結果是一個 行的集合 ,傳回SqlDataReader對象 我們可以對這個結果集進行資料的檢索操作 下面的例子就是這個方法的實作
ExecuteScalar 執行傳回但一結果的指令 比如說我們條件查詢 selete count(* ) from usertable where id=111 那麼傳回的結果是一個值 我們使用這個
ExecuteNonQuery 執行 Update Insert Delete 改變資料庫 但是 無記錄集傳回的 SQL指令 傳回的是受影響的行數
接着上面的代碼 下來:
dim s as new SqlCommand () //構造SqlCommand對象
s.Connection= cn //對Connection屬性指派
s.sqlString="select * from table" //sql 語句
SqlDataReader r=s.ExecuteReader() //執行sql語句
3. 對傳回的 SqlDataReader對象進行 檢索 獲得 結果記錄集 、、
SqlDataReader類中包含着對結果記錄集進行操作的方法
GetXXX(int Column) //根據列索引傳回值 索引是基于 0開始的 這與 JDBC中通路資料庫時候的 1開始不一樣
GetXX(ByVal ColumnName as String) //根據列的名字傳回值
GetValues() 傳回所有列的值結果是一個對象數組
接着上面的代碼來
while(r.read()) //r.read()将資料指針向前移動一行 如果存在記錄 那麼 傳回True 否則 傳回 false
{
r.GetString(0) ;//獲得第一行的資料
r.GetString(1) ;//獲得第二行的資料
}
4、在 執行SQL語句的時候 順便帶上 參數 在 一般情況下 我們用不到 ,具體用法如下
//m為SqlCommand對象
Dim sql As New SqlParameter
sql.DbType = DbType.Int32
sql.ParameterName = "@id"
sql.Value = 100
Dim sql2 As New SqlParameter
sql.ParameterName = "@id1"
m.Parameters.Add(sql)
m.Parameters.Add(sql2)