天天看點

ADO.NET 通路 Sql Server2008(一)

           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)