ado.net數(shù)據(jù)庫訪問技術(shù)
來源:易賢網(wǎng) 閱讀:94915 次 日期:2016-11-15 14:46:52
溫馨提示:易賢網(wǎng)小編為您整理了“ado.net數(shù)據(jù)庫訪問技術(shù)”,方便廣大網(wǎng)友查閱!


(1). 首先添加命名空間system.data.sqlclient;

(2). 定義數(shù)據(jù)庫連接字符串:

第一種方法:直接把數(shù)據(jù)庫連接字符串存放在字符串對象中,如上代碼所示;

第二種方法web:將數(shù)據(jù)庫連接信息存放在web.config配置文件中,然后通過使用configurationstringsettings類進行調(diào)用。來個例子說明一下:

(a). 首先,在web.config配置文件的部分定義數(shù)據(jù)庫連接信息:


(b). 在項目文件中,添加對configuration的引用,在頭部添加using system.configuration。然后定義數(shù)據(jù)庫連接字符串為:

 


備注:必須添加對system.configuration程序集的引用,才能解析上述代碼中使用的configurationmanager類。

2. 創(chuàng)建數(shù)據(jù)庫連接
1)創(chuàng)建connection對象:

2)打開數(shù)據(jù)庫: conn.open(); 一般情況下,當在.net中使用“稀缺”的資源時,如數(shù)據(jù)庫連接、窗口或圖形對象,最好確保每個資源在使用完畢后立即關(guān)閉。盡管.net的設計人員實現(xiàn)了自動垃圾收集機制,垃圾最終會被回收,但仍需要盡可能早地釋放資源,以避免出現(xiàn)資源匱乏的情況。 當編寫訪問數(shù)據(jù)庫的代碼時,因為使連接打開的時間略長于需要的時間,就可能影響其他會話。在極端的情況下,不關(guān)閉連接可能會使其他用戶無法進入一整組數(shù)據(jù)表,極大地降低應用程序的性能。主要有兩種方式可以確保數(shù)據(jù)庫連接等類似的“稀缺”資源在使用完后立即釋放。這兩種方式如下: (1)第一種方式:采用try...catch...finally語句塊 確保在finally中關(guān)閉任何已打開的連接。


在給定的方法中可能會打開許多資源,這樣try...catch...finally塊的層次有時候不容易看清。還有一種方式可以確保資源的關(guān)閉——using語句。 (2)使用using語句塊


無論塊是如何退出的,using子句都會確保關(guān)閉數(shù)據(jù)庫連接。 

 
3. 創(chuàng)建數(shù)據(jù)庫操作命令:


connection對象與數(shù)據(jù)源建立連接后,使用command對象對數(shù)據(jù)源執(zhí)行查詢、插入、修改和刪除等操作。

(1) 創(chuàng)建sql數(shù)據(jù)庫操作命令: sqlquery查詢語句具體規(guī)則請詳見我的系列文章:【讀書筆記】sql server查詢語句_鄧智容 (2) 創(chuàng)建command對象:

(a). 方法一:

 

(b). 方法二:

備注: 1). sql查詢語句若含有c#程序的變量并以字符串形式連接,則應注意數(shù)據(jù)為非數(shù)字的變量應用單引號括起來; 2). 在sql查詢語句中使用參數(shù)化查詢語句的話,譬如:

當需要給該參數(shù)賦值時,可以使用command對象建立參數(shù)對象,然后再賦值:

 

備注: 在.net framework 2.0中sqlclient增加了addwithvalue(string parametername, object value)方法。該方法簡化了調(diào)用儲存過程的輸入?yún)?shù)過程,在運行時對所輸入的數(shù)據(jù)類型進行判斷,獲取對應的數(shù)據(jù)庫類型。 因此該方法在運行效率上比用 add(string parametername, sqldbtype sqldbtype, int size, string sourcecolumn)方法要低。 在效率要求較高的地方仍然建議使用add()方法,其它場合可以使用addwithvalue()簡化代碼編寫量。

 
4. 執(zhí)行sqlquery命令:


定義好命令后,就需要執(zhí)行它。執(zhí)行的語句有多種方式,這取決于要從命令中返回什么數(shù)據(jù)。command類提供了下述可執(zhí)行的命令: (1) executenonquery() —— 執(zhí)行命令,但不返回任何結(jié)果。一般用于update、insert或delete語句中,其中唯一的返回值是受影響的記錄個數(shù)。但如果調(diào)用帶有輸出參數(shù)的存儲過程,該方法就有返回值。 (2) executereader() —— 執(zhí)行命令,返回一個類型化的idatareader。是從數(shù)據(jù)源中選擇某些數(shù)據(jù)的最簡單快捷的方法。 (3) executescalar() —— 執(zhí)行命令,返回結(jié)果集中的第一行第一列的值。

 
5. 對數(shù)據(jù)庫操作完畢后關(guān)閉數(shù)據(jù)庫連接:

 

 
三. 離線數(shù)據(jù)庫訪問


dataadapter對象主要在connection對象和dataset對象之間執(zhí)行數(shù)據(jù)的傳輸工作,將數(shù)據(jù)填充到dataset對象中,也可把dataset對象更新后的數(shù)據(jù)返回到數(shù)據(jù)源中,也可架構(gòu)在command對象上,通過commandbuilding對象生成dataadapter的insert、update和delete等sql操作命令。使用dataset和datatable對象訪問數(shù)據(jù)源后,ado.net會自動離線,在內(nèi)存中處理數(shù)據(jù),如有修改數(shù)據(jù)的操作,將自動重新連接數(shù)據(jù)源,更新數(shù)據(jù)庫。dataset對象、dataadapter對象與數(shù)據(jù)源之間的關(guān)系如下:

dataset <---> dataadapter <---> 數(shù)據(jù)源
下面是使用dataadapter進行離線數(shù)據(jù)庫訪問的操作步驟:

1. 創(chuàng)建dataadapter、datatable對象(使用的是sql server數(shù)據(jù)庫)

 

2. 將數(shù)據(jù)填充到datatable對象

3. 對datatable中的數(shù)據(jù)進行處理 tatatable對象的屬性和方法有: 

名稱 屬性/方法 說明
rows.add() 方法 插入新數(shù)據(jù)行
rows[n].delete() 方法 刪除第n行的記錄
rows.count 屬性 獲取行數(shù)
rows[i][columnname] 屬性 獲取第i行、列名為columnname的值
rows[i][j] 屬性 獲取第i行、第j列的值
 
  還有一種數(shù)據(jù)查詢技術(shù):linq。下回再討論。

通過以上對ado.net數(shù)據(jù)庫訪問技術(shù)的介紹,希望對大家有所幫助。

更多信息請查看技術(shù)文章
下一篇:沒有了
易賢網(wǎng)手機網(wǎng)站地址:ado.net數(shù)據(jù)庫訪問技術(shù)
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)