ADO.NET分為兩種串連模式:無串連模式和串連模式,它們之間的關係如下:
一、假如把資料庫看作是一個大水池,那麼connection就是伸進水中的進水龍頭,起著關鍵的作用,只有它進行了串連,才能抽到水,也就是說才能從資料庫中提取到資料。它是一個連線物件,它提供了四種訪問資料庫的對象,分別是:
1.SQL Server資料庫提供者,位於System.Data.SqlClient命名空間;
2.ODBC資料提供者,位於System.Data.Odbc命名空間;
3.OLEDB資料提供者,位於System.Data.OleDb命名空間;
4.Oracle資料提供者,位於System.Data.OracleClient命名空間。
使用Connection時我們通常都必須調用Open對象來開啟資料庫。 使用完後,需要關閉資料庫,這時我們可以用到Close()和Dispose()對象來關閉,這兩者的不同點是:Close方法用於關閉一個串連,而Dispose方法不僅關閉一個串連,而且還清理 串連所佔用的資源。當使用Close()關閉串連後,可以再調用Open方法開啟串連,不會產生錯誤 ,而如果使用Dispose方法關閉串連,就不可以使用Open方法再次開啟串連了,必須再次重新初始化串連再開啟 。
二、Command對象則像是抽水機,為抽水提供動力和執行方法,通過“水龍頭”,把水反給上面的水管。它是一個資料命令對象,主要功能是向資料庫發送查詢、更新、刪除、修改操作的SQL語句。Command對象主要有這幾種方式(sqlCommand 、OleDbCommand、OdbcCommand、OracleCommand);
Command對象有三個執行SQl的語句:
1.ExcuteNonQuery方法——執行無返回資料集的SQL語句,並返回受影響的行數,在使用SqlCommand向資料庫發送增、刪、改命令時,通常使用它來執行發送的SQL語句。
2.ExecuteReader方法——執行SQL語句,並產生一個包含資料的SqlDataReader對象的執行個體。它的傳回值是一個SqlDataReader對象。
3.ExecuteScalar方法——執行SQL語句,返回結果集中的第一行的第一列。它的傳回值通常是結果集中的第一行的第一列或者空值(如果結果集為空白)。
三、DataAdapter和DataReader對象就像輸水管,擔任著水的傳輸任務。並起著橋樑的作用。DataAdapter對象像一根輸水管,通過發動機,把水送到水庫裡儲存。而DataReader對象也是一種水管,和DataAdapter對象不同的是,它不把水輸送到水庫裡面,而是單向的直接把水送到需要水的使用者那裡,所以要比在水庫中周轉一下來的更快。
1.DataReader對象是資料讀取器對象,提供唯讀幾前的遊標,如果應用程式需要每次從資料庫中取出最新的資料,或者只是需要快速讀取資料,並不需要修改資料,那麼就可以使用DataReader對象進行讀取。對於不同的串連,有不同的DataReader物件類型,暫不作介紹。
如果要讀取資料表中的資料,通過ExecuteReader方法。對於每個關聯的SqlConnection,一次只能開啟一個SqlDataReader,在第一個關閉之前,開啟別一個的任何嘗試都將失敗。
2.DataAdapter對象是一個資料配接器對象,是DataSet與資料來源之間的橋樑,用於與資料來源之間的互連。它提供了以下四個屬性:
1>.SqlCommand屬性:用於向資料庫發送查詢SQL語句;
2>.DeleteCommand屬性:用於向資料庫發送刪除Sql語句;
3>.InsertCommand屬性:用於向資料庫發送查詢Sql語句;
4>.UpdataCommand屬性:向資料庫發送更新語句;
DataAdapter中還有幾個重要的方法:
1>.Fill方法用資料填充DataSet。
通過DataAdapter對象的Fill方法填充DataSet資料集。與Select命令關聯的Connection對象必須有效,但不需要將其開啟。DataSet對象就像存放於記憶體中的一個小型資料庫。它可以包含資料表、資料列、資料行、視圖、約束以及關係。
2>.Update方法更新資料庫。(此時,DataAdapter將調用DeleteCommand、InsertCommand以及UpdateCommand屬性);
使用DataAdapter對象的Updata方法,可以將DataSet中修改過的資料及時地更新到資料庫中。
朋友告訴我,學習還寫出來比較好,隨時記錄自己在學習過程中遇到的困難以及解決問題的方法,每個知識點都做個筆記。個人覺得比較可行,總比自己稀裡糊塗地過一遍強好多,嘿嘿,所以就有了這個筆記,而且以後也會再寫。。。由於本文內容均為自己手敲,並非複製粘貼,所以有寫錯誤的地方,敬請諒解,且歡迎指出,謝謝哈,呵呵。。。