自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

創(chuàng)建使用ADO DataSet連接問(wèn)題

開(kāi)發(fā) 后端
使用DataSet的另一個(gè)好處是它能被繼承用于建立強(qiáng)類(lèi)型的ADO DataSet。強(qiáng)類(lèi)型DataSet的好處包括設(shè)計(jì)時(shí)的檢查和強(qiáng)類(lèi)型DataSet 的Visual Studio .NET語(yǔ)句填充。

本文就詳細(xì)說(shuō)明ADO DataSet文檔以及MSDN站點(diǎn)都推薦所有人運(yùn)用using(sqlconnection cn=new sqlconnection()){}這樣地方式來(lái)創(chuàng)建Connection,因?yàn)楫?dāng)超過(guò){}后,.net framwork會(huì)自動(dòng)執(zhí)行Connection.dispose()方法,所以可以確保Connetion被及時(shí)地關(guān)閉。

1)那么及時(shí)地調(diào)用.dispose()真地這么重要么,ADO DataSet如果一個(gè)對(duì)象超出了生存空間,在.net中不是會(huì)自動(dòng)被GC(垃圾回收器)自動(dòng)清理地么?

這個(gè)問(wèn)題其實(shí)是由于GC導(dǎo)致地,.net中運(yùn)用地GC,他對(duì)于工作并不像我們這樣勤奮。GC只有當(dāng)外界環(huán)境非常惡劣地時(shí)候(沒(méi)有足夠地內(nèi)容分配地時(shí)候)他才會(huì)動(dòng)手打掃衛(wèi)生(清理不運(yùn)用地對(duì)象)。所以對(duì)于Connection 即使超出了變量地生命周期,它可能還沒(méi)有被GC干掉。

依舊未將Connection返回給Connection Pool。所以這就導(dǎo)致了下一個(gè)連接可能會(huì)有Connection Pool中沒(méi)有Available地Connection而從新打開(kāi)一個(gè)新地連接,無(wú)端地浪費(fèi)了多余地性能。所以ADO.net team反復(fù)強(qiáng)調(diào)要及時(shí)地關(guān)閉當(dāng)前地連接。一個(gè)***地方法就是運(yùn)用using{}block 系統(tǒng)會(huì)在退出{}地時(shí)候自動(dòng)調(diào)用connection.dispose方法,而dispose會(huì)自動(dòng)去執(zhí)行close方法,釋放當(dāng)前地connection。果您地項(xiàng)目是ASP.NET/WebService 我們會(huì)建議您運(yùn)用Connection Pool因?yàn)檫@個(gè)功能可以幫助您減少由于頻繁創(chuàng)建連接帶來(lái)地巨大系統(tǒng)開(kāi)銷(xiāo)。

如果您地系統(tǒng)是一個(gè)C/S模型結(jié)構(gòu),我們會(huì)不建議您運(yùn)ADO DataSet用Connection Pool,這是由于一般而言,在C/S這樣地模型中,每一個(gè)用戶(hù)均為運(yùn)用自己地用戶(hù)名密碼去連接后臺(tái)數(shù)據(jù)庫(kù),運(yùn)用地均為不同地Connection String,根本不會(huì)出現(xiàn)頻繁出現(xiàn)打開(kāi)/關(guān)閉數(shù)據(jù)庫(kù)連接地問(wèn)題。#t#

實(shí)際上在C/S模型中,您可以一直使一個(gè)Connection維護(hù)open地關(guān)閉,而不Close,這樣更可以提高您系統(tǒng)地性能,不會(huì)由于Connection Pool地額外檢查而帶來(lái)系統(tǒng)資源地消耗,相應(yīng)情況下也不必?fù)?dān)心一直打開(kāi)地Connection長(zhǎng)時(shí)間地占用了連接,導(dǎo)致其他地連接無(wú)法從connecADO DataSettion pool 及時(shí)獲取到。(因?yàn)槟揪筒恍枰\(yùn)用到connection pool)。#t#

ADO.NET給了你從數(shù)據(jù)源返回什么數(shù)據(jù)的明顯控制,也提供了在數(shù)據(jù)集中存儲(chǔ)了多少數(shù)據(jù)的控制。在設(shè)計(jì)應(yīng)用程序時(shí)可以考慮以下技巧:  
避免使用DataAdapter.Fill,它使用了startRecord和maxRecords值。使用這種ADO DataSet方式填充數(shù)據(jù)集時(shí),數(shù)據(jù)集只填充由maxRecords參數(shù)指定的記錄個(gè)數(shù)(從參數(shù)startRecord指定的記錄開(kāi)始),而不管返回的整個(gè)查詢(xún)。這導(dǎo)致讀取過(guò)時(shí)的"不想要的"記錄,同時(shí)使用了不必要的服務(wù)器資源來(lái)返回補(bǔ)充記錄。  

用于在某個(gè)時(shí)候只返回一頁(yè)記錄的技術(shù)之一是建立一個(gè)SQL語(yǔ)句,該語(yǔ)句包含一個(gè)WHERE和ORDER BY子句,并有TOP判定。這種技術(shù)依賴(lài)于識(shí)別每個(gè)唯一行的方法。當(dāng)導(dǎo)航到下一頁(yè)的記錄時(shí),修改WHERE子句使它包含所有唯一標(biāo)識(shí)比當(dāng)前v頁(yè)標(biāo)識(shí)大的記錄;當(dāng)導(dǎo)航到前面一頁(yè)時(shí),修改WHERE子句使它包含所有唯一標(biāo)識(shí)比當(dāng)前頁(yè)標(biāo)識(shí)小的記錄。對(duì)于兩種查詢(xún)都只返回記錄的TOP頁(yè)的記錄。當(dāng)導(dǎo)航到前面一頁(yè)時(shí)需要對(duì)記錄進(jìn)行降序排列,ADO DataSet這將返回查詢(xún)的末尾頁(yè)(如果需要可以在顯示前對(duì)記錄進(jìn)行重新排序)。  

責(zé)任編輯:chenqingxiang 來(lái)源: chinaunix
相關(guān)推薦

2009-12-25 10:25:59

2009-10-29 10:44:18

ADO.NET Dat

2009-11-04 11:40:38

ADO.NET Dat

2009-12-21 16:40:10

ADO連接

2009-12-31 10:38:10

ADO.NET連接數(shù)據(jù)

2009-11-04 16:55:16

ADO.NET Dat

2010-01-04 15:37:41

ADO連接

2009-12-18 16:39:59

ADO.NET基礎(chǔ)類(lèi)

2009-12-25 16:56:36

ADO.NET建立連接

2009-10-29 08:51:24

ADO.NET結(jié)構(gòu)

2009-12-25 17:37:49

ADO接口

2009-12-22 15:33:33

ADO.NET參數(shù)

2009-12-24 17:26:00

ADO創(chuàng)建表

2009-12-28 14:15:06

ADO連接

2009-12-22 13:34:48

ADO.Net Tea

2009-12-24 15:11:47

ADO.NET數(shù)據(jù)庫(kù)連

2009-12-28 10:09:10

ADO.NET連接

2009-12-23 15:17:11

ADO連接池FAQ

2009-12-22 16:16:18

ADO.NET Deb

2009-12-29 14:24:40

使用ADO.NET
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)