Microsoft .NET Framework 2.0ÀÌ ºôµåµÈ ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ¼Õ»óµÉ ¼ö ÀÖ´Â System.Data °³Ã¼¸¦ »ç¿ëÇÏ´Â ±¸¼º ¿ä¼Ò¿Í ¿¬°áµÈ µ¥ÀÌÅÍ FIX:

±â¼ú ÀÚ·á: 932491 - ÀÌ ¹®¼­°¡ Àû¿ëµÇ´Â Á¦Ç° º¸±â.
¸ðµÎ È®´ë | ¸ðµÎ Ãà¼Ò

Çö»ó

Microsoft .NET Framework 2.0ÀÌ ºôµåµÈ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ±¸¼º ¿ä¼Ò¸¦ »ç¿ëÇÏ·Á°í ÇÏ¸é ±¸¼º ¿ä¼Ò¿Í °ü·ÃµÈ µ¥ÀÌÅͰ¡ ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù. System.Data.DataSet °³Ã¼ ±¸¼º ¿ä¼Ò¸¦ »ç¿ëÇÏ´Â °æ¿ì ÀÌ ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù. ÀÌ ¹®Á¦°¡ ¹ß»ýÇÏ¸é ´ÙÀ½ ¹®Á¦ Áß Çϳª ÀÌ»óÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • DataView Ŭ·¡½º¿¡¼­ AcceptChanges ¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§ ·¹ÄÚµå °ü¸®ÀÚ°¡ ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù.
  • ½Ä ¿­¿¡¼­ °è»êµÈ °ªÀº ¿Ã¹Ù¸£°Ô ¾÷µ¥ÀÌÆ®µÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.
  • ¿©·¯ °³ÀÇ ¹®À» »ç¿ëÇÏ¿© DataTable.Select ¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§ À߸øµÈ °á°ú¸¦ ¹ÝȯÇÒ ¼ö ÀÖ½À´Ï´Ù.
  • DataTable °³Ã¼ÀÇ ³»ºÎ À妽º ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ '13' ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù.
  • º´ÇÕ ÀÛ¾÷ÀÌ ¹ß»ýÇÒ ¶§ ´ë»ó ÇàÀ» ÆíÁý »óÅ¿¡ ÀÖÀ¸¸é ·¹ÄÚµå °ü¸®ÀÚ ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù.
  • DataTable °³Ã¼ÀÇ ³»ºÎ À妽º ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ '5' ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù.

ÇØ°á ¹æ¹ý

ÇÖÇȽº Á¤º¸



Microsoft¿¡¼­ Á¦°øÇÏ´Â ÇÖÇȽº¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ ÇÖÇȽº´Â ÀÌ ¹®¼­¿¡¼­ ¼³¸íµÈ ¹®Á¦¸¸ ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹®¼­¿¡ ¼³¸íµÈ ƯÁ¤ ¹®Á¦°¡ ¹ß»ýÇÑ ½Ã½ºÅÛ¿¡¸¸ ÀÌ ÇÖÇȽº¸¦ Àû¿ëÇϽʽÿÀ. ÃßÈÄ¿¡ ÀÌ ÇÖÇȽº¸¦ Å×½ºÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼­ ÀÌ ¹®Á¦·Î ½É°¢ÇÏ°Ô ¿µÇâÀ» ¹ÞÀº °æ¿ì¸¦ Á¦¿ÜÇϰï ÀÌ ÇÖÇȽº°¡ Æ÷ÇÔµÈ ´ÙÀ½ ¼ÒÇÁÆ®¿þ¾î ¾÷µ¥ÀÌÆ®±îÁö ±â´Ù¸®´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

ÀÌ ÇÖÇȽº¸¦ MSDN ÄÚµå °¶·¯¸® ´Ù¿î·ÎµåÇÏ·Á¸é ´ÙÀ½ Microsoft À¥ »çÀÌÆ®¸¦ ¹æ¹®ÇϽʽÿÀ.
http://code.msdn.microsoft.com/KB932491

Âü°í MSDN ÄÚµå °¶·¯¸® ÇÖÇȽº¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ¾ð¾î°¡ Ç¥½ÃµË´Ï´Ù. ³ª¿­µÈ »ç¿ëÀÚ ¾ð¾î°¡ Ç¥½ÃµÇÁö ¾ÊÀ¸¸é ÇØ´ç ¾ð¾î·Î ÄÚµå °¶·¯¸® ¸®¼Ò½º ÆäÀÌÁö¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù ¶§¹®ÀÔ´Ï´Ù.

Âü°í Ãß°¡ÀûÀÎ ¹®Á¦°¡ ¹ß»ýÇÒ °æ¿ì ¶Ç´Â ¸ðµç ¹®Á¦ ÇØ°á¿¡ ÇÊ¿äÇÑ °æ¿ì º°µµÀÇ ¼­ºñ½º ¿äûÀ» ¸¸µé¾î¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÇÖÇȽº¿¡ Àû¿ëµÇÁö ¾Ê´Â Ãß°¡ Áö¿ø Áú¹®°ú ¹®Á¦¿¡´Â ÀÏ¹Ý Áö¿ø ºñ¿ëÀÌ Àû¿ëµË´Ï´Ù. Microsoft °í°´ ¼­ºñ½º Áö¿ø ÀüÈ­ ¹øÈ£ Àüü ¸ñ·Ï ¶Ç´Â º°µµÀÇ ¼­ºñ½º ¿äûÀ» ¸¸µé·Á¸é ´ÙÀ½ Microsoft À¥ »çÀÌÆ®·Î À̵¿ÇϽʽÿÀ:
http://support.microsoft.com/contactus/?ws=support

ÀüÁ¦ Á¶°Ç

ÀÌ ÇÖÇȽº ¼³Ä¡¸¦ À§ÇÑ ÀüÁ¦ ÀÖ½À´Ï´Ù.

Àç½ÃÀÛ ¿ä±¸ »çÇ×

ÀÌ ÇÖÇȽº¸¦ Àû¿ëÇÑ ÈÄ¿¡´Â ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇÒ Çʿ䰡 ¾ø½À´Ï´Ù.

ÇÖÇȽº ´ëü Á¤º¸

ÀÌ ÇÖÇȽº´Â ´Ù¸¥ ÇÖÇȽº¸¦ ´ëüÇÏÁö ¾Ê½À´Ï´Ù.

ÆÄÀÏ Á¤º¸

ÀÌ ÇÖÇȽºÀÇ ¿µ¾î ¹öÀüÀº ´ÙÀ½ Ç¥¿¡ ³ª¿­µÈ ÆÄÀÏ Æ¯¼º(¶Ç´Â ±× ÀÌÈÄÀÇ ÆÄÀÏ Æ¯¼º)ÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÆÄÀÏÀÇ ½Ã°£°ú ³¯Â¥´Â UTC (ÇùÁ¤ ¼¼°è½Ã) ·Î ³ª¿­µË´Ï´Ù. ÆÄÀÏ Á¤º¸¿¡¼­´Â ÇöÁö ½Ã°£À¸·Î º¯È¯µË´Ï´Ù. UTC¿Í ·ÎÄà ½Ã°£ÀÇ Â÷À̸¦ ¾Ë·Á¸é Á¦¾îÆÇÀÇ ³¯Â¥ ¹× ½Ã°£ Ç׸ñ¿¡¼­ Ç¥ÁØ ½Ã°£´ë ÅÇÀ» »ç¿ëÇϽʽÿÀ.
´ëÇØ x 86 ±â¹Ý ÄÄÇ»ÅÍ
Ç¥ Ãà¼ÒÇ¥ È®´ë
ÆÄÀÏ À̸§ÆÄÀÏ ¹öÀüÆÄÀÏ Å©±â³¯Â¥½Ã°£Ç÷§Æû
Mscordacwks.dll2.0.50727.802802,3042007-Feb-0311: 22x 86
Mscorjit.dll2.0.50727.802326,6562007-Feb-0311: 22x 86
Mscorlib.dll2.0.50727.8024,308,9922007-Feb-0311: 22x 86
Mscorpe.dll2.0.50727.802102,9122007-Feb-0311: 22x 86
Mscorwks.dll2.0.50727.8025,625,3442007-Feb-0311: 21x 86
Normalization.dll2.0.50727.80215,3602007-Feb-0311: 22x 86
Normidna.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.59,3422007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.45,7942007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.39,2842007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.66,3842007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.60,2942007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Peverify.dll2.0.50727.802136,1922007-Feb-0311: 21x 86
Sos.dll2.0.50727.802382,4642007-Feb-0311: 22x 86
System.data.dll2.0.50727.8022,902,0162007-Feb-0311: 22x 86
System.data.oracleclient.dll2.0.50727.802482,3042007-Feb-0311: 22x 86
Vsavb7rt.dll8.0.50727.8021,330,6882007-Feb-0311: 21x 86
´ëÇØ x 64 ±â¹Ý ÄÄÇ»ÅÍ
Ç¥ Ãà¼ÒÇ¥ È®´ë
ÆÄÀÏ À̸§ÆÄÀÏ ¹öÀüÆÄÀÏ Å©±â³¯Â¥½Ã°£Ç÷§Æû
Mscordacwks.dll2.0.50727.8021,597,4402007-Feb-0303: 14x 64
Mscordacwks.dll2.0.50727.802802,3042007-Feb-0311: 22x 86
Mscorjit.dll2.0.50727.8021,587,7122007-Feb-0303: 13x 64
Mscorjit.dll2.0.50727.802326,6562007-Feb-0311: 22x 86
Mscorlib.dll2.0.50727.8023,960,8322007-Feb-0306: 28x 64
Mscorlib.dll2.0.50727.8024,308,9922007-Feb-0311: 22x 86
Mscorpe.dll2.0.50727.802157,1842007-Feb-0303: 07x 64
Mscorpe.dll2.0.50727.802102,9122007-Feb-0311: 22x 86
Mscorpjt.dll2.0.50727.8022,004,9922007-Feb-0303: 13x 64
Normalization.dll2.0.50727.80218,4322007-Feb-0303: 12x 64
Normalization.dll2.0.50727.80215,3602007-Feb-0311: 22x 86
Normidna.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.59,3422007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normidna.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.59,3422007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.45,7942007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.45,7942007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.39,2842007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.39,2842007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.66,3842007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.66,3842007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.60,2942007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.60,2942007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Peverify.dll2.0.50727.802136,1922007-Feb-0311: 21x 86
Peverify.nlp2.0.50727.802205,8242007-Feb-0303: 13Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Sos.dll2.0.50727.802480,7682007-Feb-0303: 22x 64
Sos.dll2.0.50727.802382,4642007-Feb-0311: 22x 86
System.data.dll2.0.50727.8022,967,0402007-Feb-0306: 28x 64
System.data.dll2.0.50727.8022,902,0162007-Feb-0311: 22x 86
System.data.oracleclient.dll2.0.50727.802498,6882007-Feb-0306: 28x 64
System.data.oracleclient.dll2.0.50727.802482,3042007-Feb-0311: 22x 86
Mscorwks.dll2.0.50727.80210,323,4562007-Feb-0303: 11x 64
Mscorwks.dll2.0.50727.8025,625,3442007-Feb-0311: 21x 86
Vsavb7rt.dll8.0.50727.8021,330,6882007-Feb-0311: 21x 86
Itanium ±â¹Ý ÄÄÇ»ÅÍ
Ç¥ Ãà¼ÒÇ¥ È®´ë
ÆÄÀÏ À̸§ÆÄÀÏ ¹öÀüÆÄÀÏ Å©±â³¯Â¥½Ã°£Ç÷§Æû
Mscordacwks.dll2.0.50727.8022,719,2322007-Feb-0303: 15IA-64
Mscordacwks.dll2.0.50727.802802,3042007-Feb-0311: 22x 86
Mscorjit.dll2.0.50727.8022,705,9202007-Feb-0303: 13IA-64
Mscorjit.dll2.0.50727.802326,6562007-Feb-0311: 22x 86
Mscorlib.dll2.0.50727.8023,960,8322007-Feb-0306: 42IA-64
Mscorlib.dll2.0.50727.8024,308,9922007-Feb-0311: 22x 86
Mscorpe.dll2.0.50727.802313,8562007-Feb-0303: 06IA-64
Mscorpe.dll2.0.50727.802102,9122007-Feb-0311: 22x 86
Mscorpjt.dll2.0.50727.8023,501,0562007-Feb-0303: 14IA-64
Normalization.dll2.0.50727.80215,3602007-Feb-0311: 22x 86
Normalization.dll2.0.50727.80244,0322007-Feb-0303: 12IA-64
Fl_normidna.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.59,3422007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normidna.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.59,3422007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.45,7942007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.45,7942007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.39,2842007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.39,2842007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.66,3842007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkc.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.66,3842007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.60,2942007-Feb-0311: 22Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Normnfkd.nlpÀû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.60,2942007-Feb-0303: 14Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Peverify.dll2.0.50727.802136,1922007-Feb-0311: 21x 86
Peverify.dll2.0.50727.802383,4882007-Feb-0303: 13IA-64
Sos.dll2.0.50727.802382,4642007-Feb-0311: 22x 86
Sos.dll2.0.50727.802862,7202007-Feb-0303: 23IA-64
System.data.dll2.0.50727.8022,902,0162007-Feb-0311: 22x 86
System.data.dll2.0.50727.8023,109,8882007-Feb-0306: 42IA-64
System.data.oracleclient.dll2.0.50727.802482,3042007-Feb-0311: 22x 86
System.data.oracleclient.dll2.0.50727.802501,7602007-Feb-0306: 42IA-64
Mscorwks.dll2.0.50727.8025,625,3442007-Feb-0311: 21x 86
Mscorwks.dll2.0.50727.80221,309,9522007-Feb-0303: 11IA-64
Vsavb7rt.dll8.0.50727.8021,330,6882007-Feb-0311: 21x 86

ÇöÀç »óÅÂ

Microsoft´Â "º» ¹®¼­ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù." Àý¿¡ ³ª¿­µÈ Microsoft Á¦Ç°¿¡¼­ ÀÌ ¹®Á¦¸¦ È®ÀÎÇß½À´Ï´Ù.

Ãß°¡ Á¤º¸

¹®Á¦ 1: DataView Ŭ·¡½º¿¡¼­ AcceptChanges ¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§ ·¹ÄÚµå °ü¸®ÀÚ°¡ ¼Õ»óµÉ ¼ö ÀÖ´Ù

À̺¥Æ® 󸮱⿡¼­ ¾²±â ÀÛ¾÷À» ¼öÇàÇÏ´Â µ¿¾È ·¹ÄÚµå °ü¸®ÀÚ ¼Õ»óÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¶§ System.NullreferenceException ¿¹¿Ü°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ListChanged À̺¥Æ®¿¡¼­ ¾²±â ÀÛ¾÷À» ¼öÇàÇϸé À妽º ¾÷µ¥ÀÌÆ®°¡ À߸øµÈ ¼ø¼­·Î ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ.
  1. You use the following code in the application:
    using System;
    using System.ComponentModel;
    using System.Data;
    
    class Test {
        private static DataRow _dr = null;
        private static bool _accept = false;
        
        public static void Main()
        {
            try {
                DataSet ds = new DataSet();
                DataTable dt = ds.Tables.Add("Customers");
                DataColumn c = dt.Columns.Add("Id", typeof(int));
                dt.PrimaryKey = new DataColumn[] { c };
                dt.Columns.Add("Name", typeof(string));
                dt.Columns.Add("Age", typeof(int));
                
                dt.Rows.Add(new object[] { 1, "A", 10 });
                dt.Rows.Add(new object[] { 2, "B", 20 });
                dt.Rows.Add(new object[] { 3, "G", 30 });
                dt.Rows.Add(new object[] { 4, "H", 40 });
                dt.Rows.Add(new object[] { 5, "I", 50 });
    
                ds.AcceptChanges();
                            
                DataView dv = new DataView(dt);
                dv.Sort = "Name ASC";
                                        
                dv.ListChanged += new ListChangedEventHandler(OnListChanged);
                            
                _dr = dt.Rows[4];
                
                _accept = true;
                _dr["Name"] = "C";
                _accept = false;
                            
                _dr["Name"] = "D";
                _dr["Age"] = 55;            
                            
                Console.WriteLine(dv[2][1]);                        
            } catch (Exception exc) {
                Console.WriteLine(exc);
            }
        }
        
        public static void OnListChanged(object sender, ListChangedEventArgs args)
        {
            if (_dr != null && _accept) {
                _dr.AcceptChanges();
            }
        }
    }
  2. ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ ½Ã³ª¸®¿À¿¡¼­´Â ´ÙÀ½ ¿À·ù ¸Þ½ÃÁö¿Í À¯»çÇÑ ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù.
System.NullReferenceException: °³Ã¼ ÂüÁ¶°¡ °³Ã¼ÀÇ ÀνºÅϽº·Î ¼³Á¤µÇÁö ¾Ê½À´Ï´Ù. System.Data.DataView.IsOriginalVersion ¶§ (Int32 À妽º) 42 c:\Work\bugs\newbug1\Test.cs:line Test.Main() ¶§ (Int32 ndx) System.Data.DataRowView.get_Item ¶§
ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ListChanged À̺¥Æ®¿¡¼­ ¾²±â ÀÛ¾÷À» ¼öÇàÇÏÁö ¸¶½Ê½Ã¿À. RowChanged À̺¥Æ® ´ë½Å ListChanged À̺¥Æ®¸¦ »ç¿ëÇÏ´Â °ÍÀÌ °¡Àå ÁÁ½À´Ï´Ù.

¹®Á¦ 2: ½Ä ¿­¿¡¼­ °è»êµÈ °ªÀÌ Á¦´ë·Î ¾÷µ¥ÀÌÆ®µÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.

DataSet °³Ã¼ ½Ä ¿­¿¡¼­ °ªÀ» °è»êÇÏ´Â ½ÃµµÇÒ ¹× °ü°èÀÇ ÀϺÎÀÎ ½Ä ¿­ÀÌ ÀÖ´Â °æ¿ì ½Ä ¿­¿¡ °è»êµÈ °ªÀº ¿Ã¹Ù¸£°Ô ¾÷µ¥ÀÌÆ®µÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ.
  1. You use the following code in the application:
    using System;
    using System.ComponentModel;
    using System.Data;
    
    class Test {
        public static void Main()
        {
            try {
                DataSet ds = new DataSet();
    
                DataTable dt1 = ds.Tables.Add("T1");
                dt1.Columns.Add("CustId", typeof(int));
                dt1.Columns.Add("CustName", typeof(string));
    
                DataTable dt2 = ds.Tables.Add("T2");
                dt2.Columns.Add("EmpId", typeof(int));
                DataColumn dcEmpName = dt2.Columns.Add("EmpName", typeof(string));
                DataColumn dcMgrName = dt2.Columns.Add("MgrName", typeof(string));
                DataColumn dcReports = dt2.Columns.Add("NumberOfReports", typeof(int));
                
                DataRelation rel1 = ds.Relations.Add("T1T2", dt1.Columns["CustId"], dt2.Columns["EmpId"], false);
                DataRelation rel2 = ds.Relations.Add("T2T2", dt2.Columns["EmpName"], dt2.Columns["MgrName"], false);
    
                dcEmpName.Expression = "Parent(T1T2).CustName";
                dcMgrName.Expression = "Parent(T1T2).CustName"; 
    
                //Each person is a manager to himself.
                dcReports.Expression = "Count(Child(T2T2).EmpName)"; 
    
                AddRow(dt1, 1, "N1");
                AddRow(dt1, 2, "N2");
                AddRow(dt1, 3, "N3");
    
                AddRow(dt2, 1);
                AddRow(dt2, 2);
                AddRow(dt2, 3);
    
                Console.WriteLine(ds.GetXml());
    
                dt1.Rows[0]["CustName"] = "N4";
    
                Console.WriteLine(ds.GetXml());
            } catch (Exception exc) {
                Console.WriteLine(exc);
            }
        }
    
        public static void AddRow(DataTable dt, params object[] objArr)
        {
            Console.WriteLine("Adding row to table {0}", dt.TableName);
            dt.Rows.Add(objArr);
        }
    }
  2. ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ ½Ã³ª¸®¿À¿¡¼­´Â ´ÙÀ½°ú °°Àº Ãâ·ÂÀÌ ³ªÅ¸³³´Ï´Ù:
<NewDataSet>
 <T1>
   <CustId>1</CustId>
   <CustName>N4</CustName>
 </T1>
 <T1>
   <CustId>2</CustId>
   <CustName>N2</CustName>
 </T1>
 <T1>
   <CustId>3</CustId>
   <CustName>N3</CustName>
 </T1>
 <T2>
   <EmpId>1</EmpId>
   <EmpName>N4</EmpName>
   <MgrName>N4</MgrName>
   <NumberOfReports>0</NumberOfReports> 
 </T2>
 <T2>
   <EmpId>2</EmpId>
   <EmpName>N2</EmpName>
   <MgrName>N2</MgrName>
   <NumberOfReports>1</NumberOfReports>
 </T2>
 <T2>
   <EmpId>3</EmpId>
   <EmpName>N3</EmpName>
   <MgrName>N3</MgrName>
   <NumberOfReports>1</NumberOfReports>
 </T2>
</NewDataSet>
ÀÌ Ãâ·Â À߸øµÈ °ª 1 ´ë½Å 0 ù° T2 ¿ä¼Ò¿¡ NumberOfReports ¿ä¼Ò¸¦ Æ÷ÇÔÇÕ´Ï´Ù.

¹®Á¦ 3: ¿©·¯ °³ÀÇ ¹®À» »ç¿ëÇÏ¿© DataTable.Select ¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§ À߸øµÈ °á°ú¸¦ ¹ÝȯÇÒ ¼ö ÀÖ½À´Ï´Ù.

AND Àý ÇÔ²² »ç¿ëÇÏ¿© DataTable °³Ã¼ÀÇ Select ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© ¿©·¯ °³ÀÇ ¹®À» µ¥ÀÌÅ͸¦ °Ë»öÇÒ ¶§ Select ¸Þ¼­µå°¡ À߸øµÈ °á°ú¸¦ ¹ÝȯÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÄÚµå´Â À߸øµÈ °á°ú¸¦ ¹ÝȯÇÕ´Ï´Ù:
string filter = "(NOT ColTwo = 1) AND (ColOne = 2)";
DataTable.Select(filter);
±×·¯³ª ´ÙÀ½ ÄÚµå´Â ¿Ã¹Ù¸¥ °á°ú¸¦ ¹ÝȯÇÕ´Ï´Ù:
string filter = "NOT ColTwo = 1 AND ColOne = 2";
DataTable.Select(filter);
¶ÇÇÑ ´ÙÀ½°ú °°Àº ½Ã³ª¸®¿À¸¦ »ý°¢ÇØ º¸½Ê½Ã¿À:
  1. You use the following code in the application:
    public static void Main()
    {
      DataTable table = new DataTable();
      table.Columns.Add("ColID", typeof(int));
      table.Columns.Add("ColOne", typeof(int));
      table.Columns.Add("ColTwo", typeof(int));
      table.Rows.Add(new object[] { 1, 1, 1 });
      table.Rows.Add(new object[] { 2, 1, 2 });
      table.Rows.Add(new object[] { 3, 2, 1 });
      table.Rows.Add(new object[] { 4, 2, 2 });
    
      string[] queries = new string[] {
          "(NOT ColTwo = 1) AND (ColOne = 2)",
          "(ColOne = 2) AND (NOT ColTwo = 1)",
    
          "NOT ColTwo = 1 AND ColOne = 2",
          "ColOne = 2 AND NOT ColTwo = 1",
    
          "NOT ColTwo = 1 AND (ColOne = 2)",
          "(ColOne = 2) AND NOT ColTwo = 1",
    
          "(NOT ColTwo = 1) AND ColOne = 2",
          "ColOne = 2 AND (NOT ColTwo = 1)",
      };
    
      Console.WriteLine("Select");
      foreach(string query in queries) {
          DataRow[] rows = table.Select(query);
          Console.WriteLine("query=\"{0}\" count={1}", query, rows.Length);
          foreach(DataRow row in rows) {
              Console.WriteLine("\t{0}, {1}, {2}", row[0], row[1], row[2]);
          }
      }
    }
    
  2. ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
In this scenario, you receive the following output:
query="(NOT ColTwo = 1) AND (ColOne = 2)" count=2
        3, 2, 1
        4, 2, 2
query="(ColOne = 2) AND (NOT ColTwo = 1)" count=1
        4, 2, 2
query="NOT ColTwo = 1 AND ColOne = 2" count=1
        4, 2, 2
query="ColOne = 2 AND NOT ColTwo = 1" count=1
        4, 2, 2
query="NOT ColTwo = 1 AND (ColOne = 2)" count=2
        3, 2, 1
        4, 2, 2
query="(ColOne = 2) AND NOT ColTwo = 1" count=1
        4, 2, 2
query="(NOT ColTwo = 1) AND ColOne = 2" count=1
        4, 2, 2
query="ColOne = 2 AND (NOT ColTwo = 1)" count=1
        4, 2, 2
In this output, "(ColOne = 2)" is incorrectly displayed on the right side of an AND clause.

¹®Á¦ 4: DataTable ÀÖ´Â ³»ºÎ À妽º, ¼Õ»óµÇ¾î '13' ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³­´Ù

DataSet °³Ã¼¿¡¼­ »ç¿ëÇÏ´Â ³»ºÎ À妽º °ªÀº DataTable °³Ã¼¿¡¼­ »ç¿ëÇÏ´Â DataSet °³Ã¼ÀÇ AcceptChanges ¸Þ¼­µå¸¦ »ç¿ëÇÏ·Á°í ÇÏ´Â AcceptRule.Cascade ForeignKey ±ÔÄ¢À» ¼³Á¤ÇÒ ¶§ ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ Á¶°Ç¿¡ ÇØ´çÇϸé ÀÌ ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù.
  • DataSet °³Ã¼¸¦ ÇÑ ÀÏ´ë´Ù °ü°è°¡ Çϳª ÀÌ»óÀÇ Å×À̺íÀÌ µé¾î ÀÖ½À´Ï´Ù.
  • DataSet °³Ã¼ÀÇ AcceptChanges ¸Þ¼­µå°¡ È£ÃâµË´Ï´Ù.
  • DataSet °³Ã¼ÀÇ AcceptRejectRule °ªÀº ¸ðµÎ·Î ¼³Á¤µË´Ï´Ù. ¸ðµÎ À§ÇØ ÀÌ °ªÀ» ¼³Á¤ÇÒ ¶§ À̸¦ ÀÚµ¿À¸·Î µ¥ÀÌÅ͸¦ ¼ö¶ôÇϰųª µ¥ÀÌÅ͸¦ °ÅºÎÇÒ ¼ö ÀÖµµ·Ï ÀÚ½Ä Å×ÀÌºí¿¡ º¯°æµË´Ï´Ù.
¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ.
  1. You use the following code in the application:
    public void Main()
    {
    			DataTable Table = new DataTable("Employee");
    			Table.Columns.Add("Id", typeof(int));
    			Table.Columns.Add("ManagerId", typeof(int));
    			Table.Columns.Add("Name", typeof(string));
    
    			Table.Columns["Name"].AllowDBNull = false;
    			Table.PrimaryKey = new DataColumn[] {Table.Columns["Id"]};
    
    			DataSet Employees = new DataSet();
    			Employees.Tables.Add(Table);
    
    			DataRelation rel = Employees.Relations.Add(Table.Columns["ID"], Table.Columns["ManagerId"]);
    			rel.ChildKeyConstraint.AcceptRejectRule = AcceptRejectRule.Cascade;
    
    			DataRow ManagerA = Table.NewRow();
    			ManagerA["ID"] = 2019;
    			ManagerA["Name"] = "Manager A";
    			Table.Rows.Add(ManagerA);
    
    			DataRow ManagerB = Table.NewRow();
    			ManagerB["ID"] = 392;
    			ManagerB["Name"] = "Manager B";
    			Table.Rows.Add(ManagerB);
    
    			DataRow EmployeeB = Table.NewRow();
    			EmployeeB["ID"] = 716;
    			EmployeeB["Name"] = "Employee of B";
    			EmployeeB.SetParentRow(ManagerB);
    			Table.Rows.Add(EmployeeB);
    
    			EmployeeB = Table.NewRow();
    			EmployeeB["ID"] = 637;
    			EmployeeB["Name"] = "2nd employee of B";
    			EmployeeB.SetParentRow(ManagerB);
    			Table.Rows.Add(EmployeeB);
    
    			Employees.AcceptChanges();
    			Table.Rows.Find(392).Delete();
    			Employees.AcceptChanges();
    }
  2. ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ °æ¿ì ´ÙÀ½°ú °°Àº ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù:
DataTable ³»ºÎ À妽º°¡ ¼Õ»óµÇ¾ú½À´Ï´Ù: '13'.

¹®Á¦ 5: º´ÇÕ ÀÛ¾÷ÀÌ ¹ß»ýÇÒ °æ¿ì ´ë»ó ÇàÀ» ÆíÁý »óÅ¿¡ ÀÖÀ¸¸é ·¹ÄÚµå °ü¸®ÀÚ ¼Õ»óµÉ ¼ö ÀÖ´Ù

DataTable.Merge ÀÛ¾÷À» ´ÙÀ½ ¹ß»ýÇϰųª DataSet.Merge ÀÛ¾÷ÀÌ ¹ß»ýÇÒ ¹× DataTable °³Ã¼¿¡¼­ Çϳª ÀÌ»óÀÇ ÇàÀ» ÆíÁý, DataTable °³Ã¼ÀÇ DataSet °³Ã¼¿¡ ´ëÇØ ·¹ÄÚµå °ü¸®ÀÚ ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù.

Âü°íDataTable °³Ã¼¸¦ ÇàÀ» ÆíÁýÇÒ ¶§ ÇàÀÇ DataRowVersion °ªÀº À§ÇÑ Àӽð¡ ¼³Á¤µË´Ï´Ù.

¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ.
  1. You use the following code in the application:
    using System;
    using System.Data;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                DataSet set = new DataSet();
                DataTable table = set.Tables.Add("table");
                table.Columns.Add("C1", typeof(int));
                table.Columns.Add("C2", typeof(char));
                table.PrimaryKey = new DataColumn[] { table.Columns[0] };
                for (int i = 0; i < 26; ++i)
                {
                    table.Rows.Add(new object[] { i, (char)((ushort)'a' + i) });
                }
                table.AcceptChanges();
    
                DataSet clone = set.Copy();
                clone.Tables[0].Rows[0][1] = 'Z';
                //clone.AcceptChanges();
    
                table.Rows[0][1] = '1';
                table.Rows[0].BeginEdit();
                table.Rows[0][1] = '2';
    
    
                try
                {
                    set.Merge(clone);
                }
                finally
                {
                   foreach (DataRow row in table.Rows) {
    																	Console.WriteLine("{0}={1}", row[0], row[1]);
    															}
                }
    
            }
        }
    }
  2. ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ ½Ã³ª¸®¿À¿¡¼­´Â DataTable °³Ã¼ÀÇ DataSet °³Ã¼¿¡ ´ëÇØ ·¹ÄÚµå °ü¸®ÀÚ°¡ ¼Õ»óµÇ¾ú½À´Ï´Ù.

ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ´ë»ó DataSet °³Ã¼ÀÇ DataTable.Merge ¸Þ¼­µå¸¦ DataSet.Merge ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© ¸ÕÀú Àӽà DataRowVersion °ªÀ» ÁýÇÕ¿¡ ÀÖ´Â ÇàÀÌ ÀÖ´ÂÁö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù.

¹®Á¦ 6: DataTable °³Ã¼ÀÇ ÀÖ´Â ³»ºÎ À妽º, ¼Õ»óµÇ¾î '5' ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³­´Ù

´ÙÀ½ ½Ã³ª¸®¿À´Â DataTable °³Ã¼¿¡¼­ DataTable °³Ã¼ÀÇ ³»ºÎ À妽º¸¦ ¾÷µ¥ÀÌÆ®ÇÏÁö ¾Ê°í DataTable °³Ã¼¿¡¼­ µ¥ÀÌÅ͸¦ º¯°æÇÏ¿© ¼Õ»óÀÌ:
  1. DataColumn.Expression °ªÀº ½Ä¿¡¼­ ½ÄÀÌ ¾ø´Â º¯°æµË´Ï´Ù. ÀÌ ½Ã³ª¸®¿À¿¡¼­´Â DataColumn °³Ã¼ÀÇ ¸ðµç µ¥ÀÌÅÍ´Â DBNull·Î ¼³Á¤µË´Ï´Ù.
  2. DataTable.Clear ¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§ DataTable °³Ã¼ ¸ðµç µ¥ÀÌÅͰ¡ Á¦°ÅµÇ°í À妽º°¡ ¾÷µ¥ÀÌÆ®µË´Ï´Ù. ±×·¯³ª DataTable °³Ã¼¸¦ ÂüÁ¶ÇÏ´Â ´Ù¸¥ Å×À̺íÀº ¾÷µ¥ÀÌÆ®µÇÁö ¾Ê½À´Ï´Ù.
¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ.
  1. You use the following code in the application:
    using System;
    using System.Data;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                DataSet set = new DataSet("s");
                DataTable table1 = set.Tables.Add("a");
                table1.Columns.Add("C1", typeof(int));
                table1.Columns.Add("C2", typeof(int));
                table1.DefaultView.Sort = "C2";
    
                DataTable table2 = set.Tables.Add("b");
                table2.Columns.Add("C1", typeof(int));
                table2.Columns.Add("C2", typeof(int));
                table2.DefaultView.Sort = "C2";
    
                set.Relations.Add(new DataRelation("t1t2", table1.Columns[0], table2.Columns[0], false));
                table1.Columns[1].Expression = "Sum(Child(t1t2).C2)";
    
                AddData(table1, 1);
                AddData(table2, 2);
    
                table1.Columns[1].Expression = null;
    
                AddData(table2, 2);
                AddData(table1, 2);
    
            }
            private static void AddData(DataTable table, int y)
            {
                object[] x = new object[y];
                Random rand = new Random(20070125);
                for (int i = 0; i < 1000; ++i)
                {
                    switch (rand.Next(3))
                    {
                        case 0:
                        case 1:
                            for (int k = 0; k < x.Length; ++k)
                            {
                                x[k] = rand.Next(500);
                            }
                            table.Rows.Add(x);
                            break;
                        case 2:
                            if (0 < table.Rows.Count)
                            {
                                table.Rows.RemoveAt(rand.Next(table.Rows.Count));
                            }
                            break;
                    }
                }
            }
    
        }
    }
    
    
  2. ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ °æ¿ì ´ÙÀ½°ú °°Àº ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù:
DataTable ³»ºÎ À妽º°¡ ¼Õ»óµÇ¾ú½À´Ï´Ù: '5'.
Ãß°¡ Á¤º¸´Â ´ÙÀ½ ¹®¼­ ¹øÈ£¸¦ Ŭ¸¯ÇÏ¿© Microsoft ±â¼ú ÀÚ·á¿¡¼­ È®ÀÎÇϽʽÿÀ:
824684Microsoft ¼ÒÇÁÆ®¿þ¾î ¾÷µ¥ÀÌÆ®¸¦ ¼³¸íÇÏ´Â µ¥ »ç¿ëµÇ´Â Ç¥ÁØ ¿ë¾î¿¡ ´ëÇÑ ¼³¸í

¼Ó¼º

±â¼ú ÀÚ·á: 932491 - ¸¶Áö¸· °ËÅä: 2007³â 12¿ù 3ÀÏ ¿ù¿äÀÏ - ¼öÁ¤: 1.8
º» ¹®¼­ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
  • Microsoft .NET Framework 2.0
Ű¿öµå:?
kbmt kbfix kbbug kbprb kbexpertiseinter kbexpertisebeginner kbqfe kbpubtypekc KB932491 KbMtko
±â°è ¹ø¿ªµÈ ¹®¼­
Áß¿ä: º» ¹®¼­´Â Àü¹® ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ °ÍÀÌ ¾Æ´Ï¶ó Microsoft ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î·Î ¹ø¿ªÇÑ °ÍÀÔ´Ï´Ù. Microsoft´Â ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ ¹®¼­ ¹× ±â°è ¹ø¿ªµÈ ¹®¼­¸¦ ¸ðµÎ Á¦°øÇϹǷΠMicrosoft ±â¼ú ÀÚ·á¿¡ ÀÖ´Â ¸ðµç ¹®¼­¸¦ Çѱ۷ΠÁ¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ±â°è ¹ø¿ª ¹®¼­°¡ Ç×»ó ¿Ïº®ÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. µû¶ó¼­ ±â°è ¹ø¿ª ¹®¼­¿¡´Â ¸¶Ä¡ ¿Ü±¹ÀÎÀÌ Çѱ¹¾î·Î ¸»ÇÒ ¶§ ½Ç¼ö¸¦ ÇÏ´Â °Íó·³ ¾îÈÖ, ±¸¹® ¶Ç´Â ¹®¹ý¿¡ ¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Microsoft´Â ³»¿ë»óÀÇ ¿À¿ª ¶Ç´Â Microsoft °í°´ÀÌ ÀÌ·¯ÇÑ ¿À¿ªÀ» »ç¿ëÇÔÀ¸·Î½á ¹ß»ýÇÏ´Â ºÎ Á¤È®¼º, ¿À·ù ¶Ç´Â ¼ÕÇØ¿¡ ´ëÇØ Ã¥ÀÓÀ» ÁöÁö ¾Ê½À´Ï´Ù. Microsoft´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÚÁÖ ¾÷µ¥ÀÌÆ®Çϰí ÀÖ½À´Ï´Ù.

Çǵå¹é º¸³»±â