溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ADO.NET如何使用DataAdapter類

發(fā)布時(shí)間:2021-11-03 15:18:46 來(lái)源:億速云 閱讀:154 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹ADO.NET如何使用DataAdapter類,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

ADO.NET使用還是比較常用的,于是我研究了一下ADO.NET,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。說(shuō)說(shuō)關(guān)于ADO.NET使用DBCommand這個(gè)類,所有對(duì)數(shù)據(jù)庫(kù)的操作都是通過(guò)它進(jìn)行完成的。如果把DBConnection比作通路的話,那么DBCommand就是在這條通路上來(lái)回跑動(dòng)的車輛。缺少了它,在程序中所有對(duì)數(shù)據(jù)庫(kù)的操作無(wú)法傳遞給數(shù)據(jù)庫(kù)服務(wù)器端。因此可以說(shuō),DBConnection和DBCommand組成ADO.NET的基礎(chǔ)。在對(duì)DBCommand對(duì)象進(jìn)行操作的時(shí)候,需要注意如下幾點(diǎn)。

設(shè)置CommandText和CommandType屬性,一般情況下是不需要設(shè)置CommandType屬性,但是如果執(zhí)行存儲(chǔ)過(guò)程,則需要設(shè)置CommandType屬性為StoredProcedure。建議多使用參數(shù),而減少字符串的拼接,這樣一是可以減少程序書(shū)寫(xiě)錯(cuò)誤,而可以避免語(yǔ)句蛀蟲(chóng)。參數(shù)的使用可以如下:

SqlCommand myComm = new SqlCommand();  myComm.CommandText = “SELECT * FROM UserInfo WHERE UserName = @UserName ”;  myComm.Parameters.Add( “@UserName”, yourValue );

區(qū)分ExecuteNonQuery方法和ExecuteReader方法,前者是主要是處理非查詢類型的語(yǔ)句,返回的個(gè)數(shù)是受影響的個(gè)數(shù),但其對(duì)“INSERT”語(yǔ)句是不起任何作用的;而后者主要是處理查詢語(yǔ)句,但是需要借助DataReader來(lái)輔助操作。***不要忘了在用完后,調(diào)用Dispose方法對(duì)DBCommand對(duì)象進(jìn)行釋放。而要想獲得查詢的記錄集,僅僅靠DBCommand是無(wú)法完成的,因此要借助DataReader來(lái)獲得所查詢的記錄。例如:

SqlCommand myComm = new SqlCommand();  myComm.CommandText = “SELECT * FROM UserInfo WHERE UserName = @UserName ”;  myComm.Parameters.Add( “@UserName”, yourValue );  SqlDataReader myReader = myComm.ExecuteReader();  while( myReader.Read() )  {  myReader.GetValue( index );// Get value through specific index  }  myReader.Close();  myComm.Dispose();

所以在DataReader中比較常見(jiàn)的兩個(gè)方法,就是Read和GetValue,前者是判斷是否讀出記錄,后者是獲得記錄中某個(gè)字段的值,其返回是object類型對(duì)象,需要進(jìn)行類型轉(zhuǎn)換才能得到想要得字段值??上У氖?,DataReader每次只能讀出一行記錄,因此在使用它的時(shí)候,查詢結(jié)果要逐行讀取,其間它對(duì)DBConnection是獨(dú)享,即不能在此時(shí)刻用同一個(gè)DBConnection去做其它的數(shù)據(jù)庫(kù)操作。

要提的一點(diǎn)是,在ADO.NET中提供了一個(gè)更好的、更方便的數(shù)據(jù)操作工具,即DataAdapter類。對(duì)于一個(gè)DataAdapter對(duì)象,可以設(shè)置四個(gè)DBCommand,分別是SelectCommand、InsertCommand、DeleteCommand、UpdateCommand。而這四個(gè)DBCommand并不需要全部初始化,主要是看程序的具體要求,如果只是用到查詢方面,那么只需要設(shè)定一下SelectCommand即可,這和一般的DBCommand操作一樣

對(duì)于DataAdapter操作返回的記錄集,需要用DataSet來(lái)進(jìn)行輔助操作,例如:

獲得查詢的記錄集

DataAdapter.Fill( DataSet, “yourTableName” );// “yourTableName” is the name using in data set

更新數(shù)據(jù)庫(kù)

DataAdapter.Update( DataSet, “yourTableName” );

此處要注意的是:首先DataSet要發(fā)生變化,如果和Fill之后一樣,對(duì)數(shù)據(jù)庫(kù)則沒(méi)什么影響;再者要設(shè)置InsertCommand、DeleteCommand、UpdateCommand,如果不設(shè)置對(duì)應(yīng)操作語(yǔ)句,則一樣對(duì)數(shù)據(jù)庫(kù)沒(méi)任何影響。相對(duì)而言,DataAdapter效率要差一些,但是避免了一些操作,讀取記錄集,對(duì)獲得記錄數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換等等。同時(shí)其對(duì)DBConnection的占有只是在對(duì)數(shù)據(jù)庫(kù)操作的時(shí)候,操作完即立刻釋放。因此,強(qiáng)烈建議多ADO.NET使用DataAdapter,而少ADO.NET使用DataReader。在文章的結(jié)尾,要說(shuō)明的,以上所提到的只是數(shù)據(jù)庫(kù)操作的虛類名,如果程序真正操作數(shù)據(jù)庫(kù),則要根據(jù)數(shù)據(jù)庫(kù)的不同,選擇不同子類來(lái)建立對(duì)象。

以上是“ADO.NET如何使用DataAdapter類”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI