ä¸ãDataSetåºæ¬ä»ç»
Dataset表示ä¸ä¸ªæ°æ®éï¼æ¯æ°æ®å¨å
åä¸çç¼åã å³æ¯ï¼DataSetæ¯å
å(å
³ç³»å)æ°æ®åºï¼å®å¯ä»¥å
æ¬å¤ä¸ªè¡¨ä»¥å表ä¹é´çç¸äºå
³ç³»ï¼è¿æè¿æ»¤æ¥è¯¢ççã
DataSetè¿æ¥æ°æ®åºæ¶æ¯éé¢åè¿æ¥çï¼DataSetæ¯å°DBä¸çæ°æ®ä¸æ¬¡æ§å è½½å°å
åä¸ï¼è¯»åå®æ°æ®ä»¥åæ¾å¼æ°æ®åºè¿æ¥ï¼å 为æ°æ®é½å¨å
åä¸ï¼æ以ä¼æ¯è¾æ¶èå
åã
DataSetæ¯ææ¥è¯¢\ä¿®æ¹\å é¤çæä½,æ¯è¾çµæ´»ã
äºãDataReaderåºæ¬ä»ç»
DataReader使ç¨æ¶å§ç»å ç¨SqlConnection,å¨çº¿æä½æ°æ®åº.
DataReaderæ¯æ¬¡åªå¨å
åä¸å è½½ä¸æ¡æ°æ®,è约å
åï¼å¹¶ä¸æ¯åªè¯»çååç,读å®æ°æ®åç±ç¨æ·å³å®æ¯å¦æå¼è¿æ¥ã
DataReaderåååªè¯».DataSetæ¯ææ¥è¯¢\ä¿®æ¹\å é¤çæä½,æ¯è¾çµæ´».
è¿ç¨DataReaderç±»ççæ³æ¡ä»¶ï¼ ä½ è¯»åçæ°æ®å¿
é¡»æ¯æ°çï¼æ以å¨æ¯æ¬¡éè¦æ°æ®çæ¶åï¼ä½ é½å¿
é¡»ä»æ°æ®åºè¯»åã
ä¸ãDataReaderåDataSet两è
读åæ°æ®æ§è½æ¯è¾
DataReaderæ¯DataSet读åé度快ï¼è¯»å100æ¡ä»¥ä¸æ°æ®éæ¶é´å·®å«å¾å°ï¼è¯»åè¶
è¿æ°åæ¡æ°æ®å·®è·é常ææ¾ã
DataReaderæ¯DataSetå ç¨å
åç¹å«å°ãDataSet容æ产ç大对象ï¼å¯¹æ§è½å½±åæ¯è¾å¤§ã
DataReaderæ¯å¨çº¿è¯»åæ°æ®éè¦èªå·±å
³éè¿æ¥ï¼å¹¶ä¸é«å¹¶å访é®æ¶è¦èèæ°æ®åºè¿æ¥æ± æ¯å¦å¤ç¨çé®é¢ï¼ä¸è¬åªæå¨è¯»åæ°åæ¡æ°æ®æç»å ç¨æ°æ®åºè¿æ¥ï¼å¹¶ä¸å¹¶å访é®é大çæ¶åæä¼èèè¿ä¸ªé®é¢ï¼ã
åãDataReader 使ç¨å
³æ³¨ç¹
å½ä½ å¨ç¨DataReaderç±»æ¶ï¼å¨å
³éDataReaderç±»åï¼ä¸æ°æ®åºçè¿æ¥ä¸ä¼è¢«éæ¾åè¿æ¥æ± ãæ½å¨çé®é¢ï¼å¨æ°å个请æ±ä¹é´ï¼æ½å¨çä¸ä¸ªå¾å°ç延æ¶é½ä¼é æï¼è¿æ¥ä¸²å¹¶å访é®éï¼ä¸è¯»åæ¶é´å¾é¿ï¼ï¼ä»èå°±ä¼æå¯è½æ¶èå®å¯ç¨çæ°æ®åºè¿æ¥ã
äºãDataSet 使ç¨å
³æ³¨ç¹
DataSetå¯ä»¥å¨è¯»åææçæ°æ®ä»¥åï¼å¹¶å¯ä»¥é©¬ä¸å
³éä¸æ°æ®åºçè¿æ¥ï¼å°å®è¿åå°è¿æ¥æ± ï¼å æ¤å
¶å®ç请æ±å°±å¯ä»¥ç¨è¿ä¸ªè¿æ¥äºã
é¢ç¹å建DataSetå¿
é¡»è¦èèå
åå ç¨å大对象两个é®é¢ã
å¨.Netä¸è¶
è¿85Kç对象é½æ¯å¤§å¯¹è±¡ï¼é¢ç¹å建DataSet(临æ¶æ§ç)大对象ï¼ç³»ç»å°±éè¦è±è´¹çæ¶é´æ¥è¿è¡åå¾åæ¶ãæç»é¢ç¹çå建大对象ç¶ååéæ¾å¤§å¯¹è±¡å¯¹æ§è½ä¼æå¾å¤§çè´é¢å½±åãç³»ç»CpuåMemoryè¿å±±è½¦ä¼¼çæ²çº¿å¾å¾å¤æ¯ç±äºå¤§å¯¹è±¡äº§ççã
å
³äº.Net大对象çé®é¢ï¼åèå¦ä¸èµæ
http://www.cnblogs.com/yukaizhao/archive/2011/11/21/dot_net_gc_large_object_heap.html (ä¸æ)
http://msdn.microsoft.com/en-us/magazine/cc534993.aspx ï¼Eæï¼
å
ã建议ï¼
读åæ°æ®éå¾å¤§ä¸æ¯å¨æçæ°æ®ï¼å»ºè®®ä½¿ç¨DataReader
读åæ°æ®éè¦ç¦»çº¿å¤ççæè
éè¦éç¨è¯»åçæ°æ®çï¼å»ºè®®ä½¿ç¨DataSetã
对äºé«å¹¶å访é®æ°æ®åºè¯»åä¸æ°æ®éä¸å¤§çï¼å»ºè®®ä½¿ç¨DataReaderã注æ使ç¨å®è¦å
³éè¿æ¥ã
对åºé«å¹¶å访é®æ°æ®åºæ¯æ¬¡è¯»åæ°æ®éæ¯è¾å¤§ï¼è¶
è¿85Kï¼ï¼å¹¶ä¸éè¦æç»è®¿é®å¾é¿æ¶é´ï¼è¿ç§åºæ¯å¿
é¡»åååæµè¯ï¼å¯¹æ¯ä¸¤è
çæ
åµãï¼,
ä¼å
æ¨èDataReaderï¼è¯»åé度快(å¦ææ¯æ¬¡è¯»åå®é½éæ¾è¿æ¥ï¼è¿æ¥æ± é®é¢ä¸è¬ä¸ä¼åºç°)ï¼å¦æéç¨DataSetçè¯ï¼è¯·èèæå¡å¨Memoryå大对象对Cpuçååã
å¦å¤ï¼
ExcecuteXmlReader()æ¹æ³æ¥å¾å°ä¸ä¸ªXmlReaderç±»ï¼ç¸å½äºXMLççDataReaderï¼ï¼éè¦ä¸ä¸ªè¿ç¨FOR XMLåå¥çSQL Serveræ¥è¯¢ï¼æè
ä¸ä¸ªå
å«ææXMLç±»åçå段ï¼æè
å
å«XMLçntextçå段ï¼ã
ä¸ãDataReaderç®å示ä¾
using (IDataReader idr = db.ExecuteReader(dbCommand)) //èªå¨å
³éidr
{
while (idr.Read())
{
Codeâ¦â¦
}
}
æè
IDataReader rdr = db.ExecuteReader(dbCommand);
while (idr.Read())
{
Codeâ¦â¦
}
rdr.Close();