Microsoft .NET Framework 2.0ÀÌ ºôµåµÈ ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ ¼Õ»óµÉ ¼ö ÀÖ´Â System.Data °³Ã¼¸¦ »ç¿ëÇÏ´Â ±¸¼º ¿ä¼Ò¿Í ¿¬°áµÈ µ¥ÀÌÅÍ FIX:Microsoft .NET Framework 2.0ÀÌ ºôµåµÈ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ±¸¼º ¿ä¼Ò¸¦ »ç¿ëÇÏ·Á°í ÇÏ¸é ±¸¼º ¿ä¼Ò¿Í °ü·ÃµÈ µ¥ÀÌÅͰ¡ ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù. System.Data.DataSet °³Ã¼ ±¸¼º ¿ä¼Ò¸¦ »ç¿ëÇÏ´Â °æ¿ì ÀÌ ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù. ÀÌ ¹®Á¦°¡ ¹ß»ýÇÏ¸é ´ÙÀ½ ¹®Á¦ Áß Çϳª ÀÌ»óÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. - DataView Ŭ·¡½º¿¡¼ AcceptChanges ¸Þ¼µå¸¦ È£ÃâÇÒ ¶§ ·¹ÄÚµå °ü¸®ÀÚ°¡ ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù.
- ½Ä ¿¿¡¼ °è»êµÈ °ªÀº ¿Ã¹Ù¸£°Ô ¾÷µ¥ÀÌÆ®µÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.
- ¿©·¯ °³ÀÇ ¹®À» »ç¿ëÇÏ¿© DataTable.Select ¸Þ¼µå¸¦ È£ÃâÇÒ ¶§ À߸øµÈ °á°ú¸¦ ¹ÝȯÇÒ ¼ö ÀÖ½À´Ï´Ù.
- DataTable °³Ã¼ÀÇ ³»ºÎ À妽º ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ '13' ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù.
- º´ÇÕ ÀÛ¾÷ÀÌ ¹ß»ýÇÒ ¶§ ´ë»ó ÇàÀ» ÆíÁý »óÅ¿¡ ÀÖÀ¸¸é ·¹ÄÚµå °ü¸®ÀÚ ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù.
- DataTable °³Ã¼ÀÇ ³»ºÎ À妽º ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ '5' ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù.
ÇÖÇȽº Á¤º¸Microsoft¿¡¼ Á¦°øÇÏ´Â ÇÖÇȽº¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ ÇÖÇȽº´Â ÀÌ ¹®¼¿¡¼ ¼³¸íµÈ ¹®Á¦¸¸ ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹®¼¿¡ ¼³¸íµÈ ƯÁ¤ ¹®Á¦°¡ ¹ß»ýÇÑ ½Ã½ºÅÛ¿¡¸¸ ÀÌ ÇÖÇȽº¸¦ Àû¿ëÇϽʽÿÀ. ÃßÈÄ¿¡ ÀÌ ÇÖÇȽº¸¦ Å×½ºÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼ ÀÌ ¹®Á¦·Î ½É°¢ÇÏ°Ô ¿µÇâÀ» ¹ÞÀº °æ¿ì¸¦ Á¦¿ÜÇϰï ÀÌ ÇÖÇȽº°¡ Æ÷ÇÔµÈ ´ÙÀ½ ¼ÒÇÁÆ®¿þ¾î ¾÷µ¥ÀÌÆ®±îÁö ±â´Ù¸®´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ÀÌ ÇÖÇȽº¸¦ MSDN ÄÚµå °¶·¯¸® ´Ù¿î·ÎµåÇÏ·Á¸é ´ÙÀ½ Microsoft À¥ »çÀÌÆ®¸¦ ¹æ¹®ÇϽʽÿÀ. Âü°í MSDN ÄÚµå °¶·¯¸® ÇÖÇȽº¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ¾ð¾î°¡ Ç¥½ÃµË´Ï´Ù. ³ª¿µÈ »ç¿ëÀÚ ¾ð¾î°¡ Ç¥½ÃµÇÁö ¾ÊÀ¸¸é ÇØ´ç ¾ð¾î·Î ÄÚµå °¶·¯¸® ¸®¼Ò½º ÆäÀÌÁö¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù ¶§¹®ÀÔ´Ï´Ù. Âü°í Ãß°¡ÀûÀÎ ¹®Á¦°¡ ¹ß»ýÇÒ °æ¿ì ¶Ç´Â ¸ðµç ¹®Á¦ ÇØ°á¿¡ ÇÊ¿äÇÑ °æ¿ì º°µµÀÇ ¼ºñ½º ¿äûÀ» ¸¸µé¾î¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÇÖÇȽº¿¡ Àû¿ëµÇÁö ¾Ê´Â Ãß°¡ Áö¿ø Áú¹®°ú ¹®Á¦¿¡´Â ÀÏ¹Ý Áö¿ø ºñ¿ëÀÌ Àû¿ëµË´Ï´Ù. Microsoft °í°´ ¼ºñ½º Áö¿ø ÀüÈ ¹øÈ£ Àüü ¸ñ·Ï ¶Ç´Â º°µµÀÇ ¼ºñ½º ¿äûÀ» ¸¸µé·Á¸é ´ÙÀ½ Microsoft À¥ »çÀÌÆ®·Î À̵¿ÇϽʽÿÀ: ÀüÁ¦ Á¶°ÇÀÌ ÇÖÇȽº ¼³Ä¡¸¦ À§ÇÑ ÀüÁ¦ ÀÖ½À´Ï´Ù. Àç½ÃÀÛ ¿ä±¸ »çÇ×ÀÌ ÇÖÇȽº¸¦ Àû¿ëÇÑ ÈÄ¿¡´Â ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ÇÖÇȽº ´ëü Á¤º¸ÀÌ ÇÖÇȽº´Â ´Ù¸¥ ÇÖÇȽº¸¦ ´ëüÇÏÁö ¾Ê½À´Ï´Ù. ÆÄÀÏ Á¤º¸ÀÌ ÇÖÇȽºÀÇ ¿µ¾î ¹öÀüÀº ´ÙÀ½ Ç¥¿¡ ³ª¿µÈ ÆÄÀÏ Æ¯¼º(¶Ç´Â ±× ÀÌÈÄÀÇ ÆÄÀÏ Æ¯¼º)ÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÆÄÀÏÀÇ ½Ã°£°ú ³¯Â¥´Â UTC (ÇùÁ¤ ¼¼°è½Ã) ·Î ³ª¿µË´Ï´Ù. ÆÄÀÏ Á¤º¸¿¡¼´Â ÇöÁö ½Ã°£À¸·Î º¯È¯µË´Ï´Ù. UTC¿Í ·ÎÄà ½Ã°£ÀÇ Â÷À̸¦ ¾Ë·Á¸é Á¦¾îÆÇÀÇ ³¯Â¥ ¹× ½Ã°£ Ç׸ñ¿¡¼ Ç¥ÁØ ½Ã°£´ë ÅÇÀ» »ç¿ëÇϽʽÿÀ. ´ëÇØ x 86 ±â¹Ý ÄÄÇ»ÅÍÇ¥ Ãà¼ÒÇ¥ È®´ë | ÆÄÀÏ À̸§ | ÆÄÀÏ ¹öÀü | ÆÄÀÏ Å©±â | ³¯Â¥ | ½Ã°£ | Ç÷§Æû |
|---|
| Mscordacwks.dll | 2.0.50727.802 | 802,304 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorjit.dll | 2.0.50727.802 | 326,656 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorlib.dll | 2.0.50727.802 | 4,308,992 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorpe.dll | 2.0.50727.802 | 102,912 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorwks.dll | 2.0.50727.802 | 5,625,344 | 2007-Feb-03 | 11: 21 | x 86 | | Normalization.dll | 2.0.50727.802 | 15,360 | 2007-Feb-03 | 11: 22 | x 86 | | Normidna.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 59,342 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 45,794 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 39,284 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 66,384 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 60,294 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Peverify.dll | 2.0.50727.802 | 136,192 | 2007-Feb-03 | 11: 21 | x 86 | | Sos.dll | 2.0.50727.802 | 382,464 | 2007-Feb-03 | 11: 22 | x 86 | | System.data.dll | 2.0.50727.802 | 2,902,016 | 2007-Feb-03 | 11: 22 | x 86 | | System.data.oracleclient.dll | 2.0.50727.802 | 482,304 | 2007-Feb-03 | 11: 22 | x 86 | | Vsavb7rt.dll | 8.0.50727.802 | 1,330,688 | 2007-Feb-03 | 11: 21 | x 86 |
´ëÇØ x 64 ±â¹Ý ÄÄÇ»ÅÍÇ¥ Ãà¼ÒÇ¥ È®´ë | ÆÄÀÏ À̸§ | ÆÄÀÏ ¹öÀü | ÆÄÀÏ Å©±â | ³¯Â¥ | ½Ã°£ | Ç÷§Æû |
|---|
| Mscordacwks.dll | 2.0.50727.802 | 1,597,440 | 2007-Feb-03 | 03: 14 | x 64 | | Mscordacwks.dll | 2.0.50727.802 | 802,304 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorjit.dll | 2.0.50727.802 | 1,587,712 | 2007-Feb-03 | 03: 13 | x 64 | | Mscorjit.dll | 2.0.50727.802 | 326,656 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorlib.dll | 2.0.50727.802 | 3,960,832 | 2007-Feb-03 | 06: 28 | x 64 | | Mscorlib.dll | 2.0.50727.802 | 4,308,992 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorpe.dll | 2.0.50727.802 | 157,184 | 2007-Feb-03 | 03: 07 | x 64 | | Mscorpe.dll | 2.0.50727.802 | 102,912 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorpjt.dll | 2.0.50727.802 | 2,004,992 | 2007-Feb-03 | 03: 13 | x 64 | | Normalization.dll | 2.0.50727.802 | 18,432 | 2007-Feb-03 | 03: 12 | x 64 | | Normalization.dll | 2.0.50727.802 | 15,360 | 2007-Feb-03 | 11: 22 | x 86 | | Normidna.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 59,342 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normidna.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 59,342 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 45,794 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 45,794 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 39,284 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 39,284 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 66,384 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 66,384 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 60,294 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 60,294 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Peverify.dll | 2.0.50727.802 | 136,192 | 2007-Feb-03 | 11: 21 | x 86 | | Peverify.nlp | 2.0.50727.802 | 205,824 | 2007-Feb-03 | 03: 13 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Sos.dll | 2.0.50727.802 | 480,768 | 2007-Feb-03 | 03: 22 | x 64 | | Sos.dll | 2.0.50727.802 | 382,464 | 2007-Feb-03 | 11: 22 | x 86 | | System.data.dll | 2.0.50727.802 | 2,967,040 | 2007-Feb-03 | 06: 28 | x 64 | | System.data.dll | 2.0.50727.802 | 2,902,016 | 2007-Feb-03 | 11: 22 | x 86 | | System.data.oracleclient.dll | 2.0.50727.802 | 498,688 | 2007-Feb-03 | 06: 28 | x 64 | | System.data.oracleclient.dll | 2.0.50727.802 | 482,304 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorwks.dll | 2.0.50727.802 | 10,323,456 | 2007-Feb-03 | 03: 11 | x 64 | | Mscorwks.dll | 2.0.50727.802 | 5,625,344 | 2007-Feb-03 | 11: 21 | x 86 | | Vsavb7rt.dll | 8.0.50727.802 | 1,330,688 | 2007-Feb-03 | 11: 21 | x 86 |
Itanium ±â¹Ý ÄÄÇ»ÅÍÇ¥ Ãà¼ÒÇ¥ È®´ë | ÆÄÀÏ À̸§ | ÆÄÀÏ ¹öÀü | ÆÄÀÏ Å©±â | ³¯Â¥ | ½Ã°£ | Ç÷§Æû |
|---|
| Mscordacwks.dll | 2.0.50727.802 | 2,719,232 | 2007-Feb-03 | 03: 15 | IA-64 | | Mscordacwks.dll | 2.0.50727.802 | 802,304 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorjit.dll | 2.0.50727.802 | 2,705,920 | 2007-Feb-03 | 03: 13 | IA-64 | | Mscorjit.dll | 2.0.50727.802 | 326,656 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorlib.dll | 2.0.50727.802 | 3,960,832 | 2007-Feb-03 | 06: 42 | IA-64 | | Mscorlib.dll | 2.0.50727.802 | 4,308,992 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorpe.dll | 2.0.50727.802 | 313,856 | 2007-Feb-03 | 03: 06 | IA-64 | | Mscorpe.dll | 2.0.50727.802 | 102,912 | 2007-Feb-03 | 11: 22 | x 86 | | Mscorpjt.dll | 2.0.50727.802 | 3,501,056 | 2007-Feb-03 | 03: 14 | IA-64 | | Normalization.dll | 2.0.50727.802 | 15,360 | 2007-Feb-03 | 11: 22 | x 86 | | Normalization.dll | 2.0.50727.802 | 44,032 | 2007-Feb-03 | 03: 12 | IA-64 | | Fl_normidna.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 59,342 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normidna.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 59,342 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 45,794 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 45,794 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 39,284 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 39,284 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 66,384 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkc.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 66,384 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 60,294 | 2007-Feb-03 | 11: 22 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Normnfkd.nlp | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | 60,294 | 2007-Feb-03 | 03: 14 | Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. | | Peverify.dll | 2.0.50727.802 | 136,192 | 2007-Feb-03 | 11: 21 | x 86 | | Peverify.dll | 2.0.50727.802 | 383,488 | 2007-Feb-03 | 03: 13 | IA-64 | | Sos.dll | 2.0.50727.802 | 382,464 | 2007-Feb-03 | 11: 22 | x 86 | | Sos.dll | 2.0.50727.802 | 862,720 | 2007-Feb-03 | 03: 23 | IA-64 | | System.data.dll | 2.0.50727.802 | 2,902,016 | 2007-Feb-03 | 11: 22 | x 86 | | System.data.dll | 2.0.50727.802 | 3,109,888 | 2007-Feb-03 | 06: 42 | IA-64 | | System.data.oracleclient.dll | 2.0.50727.802 | 482,304 | 2007-Feb-03 | 11: 22 | x 86 | | System.data.oracleclient.dll | 2.0.50727.802 | 501,760 | 2007-Feb-03 | 06: 42 | IA-64 | | Mscorwks.dll | 2.0.50727.802 | 5,625,344 | 2007-Feb-03 | 11: 21 | x 86 | | Mscorwks.dll | 2.0.50727.802 | 21,309,952 | 2007-Feb-03 | 03: 11 | IA-64 | | Vsavb7rt.dll | 8.0.50727.802 | 1,330,688 | 2007-Feb-03 | 11: 21 | x 86 |
Microsoft´Â "º» ¹®¼ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù." Àý¿¡ ³ª¿µÈ Microsoft Á¦Ç°¿¡¼ ÀÌ ¹®Á¦¸¦ È®ÀÎÇß½À´Ï´Ù. ¹®Á¦ 1: DataView Ŭ·¡½º¿¡¼ AcceptChanges ¸Þ¼µå¸¦ È£ÃâÇÒ ¶§ ·¹ÄÚµå °ü¸®ÀÚ°¡ ¼Õ»óµÉ ¼ö ÀÖ´ÙÀ̺¥Æ® 󸮱⿡¼ ¾²±â ÀÛ¾÷À» ¼öÇàÇÏ´Â µ¿¾È ·¹ÄÚµå °ü¸®ÀÚ ¼Õ»óÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¶§ System.NullreferenceException ¿¹¿Ü°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ListChanged À̺¥Æ®¿¡¼ ¾²±â ÀÛ¾÷À» ¼öÇàÇϸé À妽º ¾÷µ¥ÀÌÆ®°¡ À߸øµÈ ¼ø¼·Î ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ. - 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();
}
}
} - ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ ½Ã³ª¸®¿À¿¡¼´Â ´ÙÀ½ ¿À·ù ¸Þ½ÃÁö¿Í À¯»çÇÑ ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù. 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 °³Ã¼ ½Ä ¿¿¡¼ °ªÀ» °è»êÇÏ´Â ½ÃµµÇÒ ¹× °ü°èÀÇ ÀϺÎÀÎ ½Ä ¿ÀÌ ÀÖ´Â °æ¿ì ½Ä ¿¿¡ °è»êµÈ °ªÀº ¿Ã¹Ù¸£°Ô ¾÷µ¥ÀÌÆ®µÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ. - 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);
}
} - ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ ½Ã³ª¸®¿À¿¡¼´Â ´ÙÀ½°ú °°Àº Ãâ·ÂÀÌ ³ªÅ¸³³´Ï´Ù: <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);
¶ÇÇÑ ´ÙÀ½°ú °°Àº ½Ã³ª¸®¿À¸¦ »ý°¢ÇØ º¸½Ê½Ã¿À: - 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]);
}
}
}
- ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
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 °ªÀº ¸ðµÎ·Î ¼³Á¤µË´Ï´Ù. ¸ðµÎ À§ÇØ ÀÌ °ªÀ» ¼³Á¤ÇÒ ¶§ À̸¦ ÀÚµ¿À¸·Î µ¥ÀÌÅ͸¦ ¼ö¶ôÇϰųª µ¥ÀÌÅ͸¦ °ÅºÎÇÒ ¼ö ÀÖµµ·Ï ÀÚ½Ä Å×ÀÌºí¿¡ º¯°æµË´Ï´Ù.
¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ. - 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();
} - ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ °æ¿ì ´ÙÀ½°ú °°Àº ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù: DataTable ³»ºÎ À妽º°¡ ¼Õ»óµÇ¾ú½À´Ï´Ù: '13'. ¹®Á¦ 5: º´ÇÕ ÀÛ¾÷ÀÌ ¹ß»ýÇÒ °æ¿ì ´ë»ó ÇàÀ» ÆíÁý »óÅ¿¡ ÀÖÀ¸¸é ·¹ÄÚµå °ü¸®ÀÚ ¼Õ»óµÉ ¼ö ÀÖ´ÙDataTable.Merge ÀÛ¾÷À» ´ÙÀ½ ¹ß»ýÇϰųª DataSet.Merge ÀÛ¾÷ÀÌ ¹ß»ýÇÒ ¹× DataTable °³Ã¼¿¡¼ Çϳª ÀÌ»óÀÇ ÇàÀ» ÆíÁý, DataTable °³Ã¼ÀÇ DataSet °³Ã¼¿¡ ´ëÇØ ·¹ÄÚµå °ü¸®ÀÚ ¼Õ»óµÉ ¼ö ÀÖ½À´Ï´Ù. Âü°íDataTable °³Ã¼¸¦ ÇàÀ» ÆíÁýÇÒ ¶§ ÇàÀÇ DataRowVersion °ªÀº À§ÇÑ Àӽð¡ ¼³Á¤µË´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ. - 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]);
}
}
}
}
} - ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ ½Ã³ª¸®¿À¿¡¼´Â DataTable °³Ã¼ÀÇ DataSet °³Ã¼¿¡ ´ëÇØ ·¹ÄÚµå °ü¸®ÀÚ°¡ ¼Õ»óµÇ¾ú½À´Ï´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ´ë»ó DataSet °³Ã¼ÀÇ DataTable.Merge ¸Þ¼µå¸¦ DataSet.Merge ¸Þ¼µå¸¦ »ç¿ëÇÏ¿© ¸ÕÀú Àӽà DataRowVersion °ªÀ» ÁýÇÕ¿¡ ÀÖ´Â ÇàÀÌ ÀÖ´ÂÁö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù. ¹®Á¦ 6: DataTable °³Ã¼ÀÇ ÀÖ´Â ³»ºÎ À妽º, ¼Õ»óµÇ¾î '5' ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³´Ù´ÙÀ½ ½Ã³ª¸®¿À´Â DataTable °³Ã¼¿¡¼ DataTable °³Ã¼ÀÇ ³»ºÎ À妽º¸¦ ¾÷µ¥ÀÌÆ®ÇÏÁö ¾Ê°í DataTable °³Ã¼¿¡¼ µ¥ÀÌÅ͸¦ º¯°æÇÏ¿© ¼Õ»óÀÌ: - DataColumn.Expression °ªÀº ½Ä¿¡¼ ½ÄÀÌ ¾ø´Â º¯°æµË´Ï´Ù. ÀÌ ½Ã³ª¸®¿À¿¡¼´Â DataColumn °³Ã¼ÀÇ ¸ðµç µ¥ÀÌÅÍ´Â DBNull·Î ¼³Á¤µË´Ï´Ù.
- DataTable.Clear ¸Þ¼µå¸¦ È£ÃâÇÒ ¶§ DataTable °³Ã¼ ¸ðµç µ¥ÀÌÅͰ¡ Á¦°ÅµÇ°í À妽º°¡ ¾÷µ¥ÀÌÆ®µË´Ï´Ù. ±×·¯³ª DataTable °³Ã¼¸¦ ÂüÁ¶ÇÏ´Â ´Ù¸¥ Å×À̺íÀº ¾÷µ¥ÀÌÆ®µÇÁö ¾Ê½À´Ï´Ù.
¿¹¸¦ µé¾î, ´ÙÀ½ ½Ã³ª¸®¿À¸¦ °í·ÁÇϽʽÿÀ. - 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;
}
}
}
}
}
- ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ °æ¿ì ´ÙÀ½°ú °°Àº ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù: DataTable ³»ºÎ À妽º°¡ ¼Õ»óµÇ¾ú½À´Ï´Ù: '5'. Ãß°¡ Á¤º¸´Â ´ÙÀ½ ¹®¼ ¹øÈ£¸¦ Ŭ¸¯ÇÏ¿© Microsoft ±â¼ú ÀÚ·á¿¡¼ È®ÀÎÇϽʽÿÀ: 824684
(http://support.microsoft.com/kb/824684/
)
Microsoft ¼ÒÇÁÆ®¿þ¾î ¾÷µ¥ÀÌÆ®¸¦ ¼³¸íÇÏ´Â µ¥ »ç¿ëµÇ´Â Ç¥ÁØ ¿ë¾î¿¡ ´ëÇÑ ¼³¸í ±â¼ú ÀÚ·á: 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´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÚÁÖ ¾÷µ¥ÀÌÆ®Çϰí ÀÖ½À´Ï´Ù. °¨»çÇÕ´Ï´Ù! º¸³»ÁֽŠÀǰßÀº Áö¿ø ÄÜÅÙÃ÷¸¦ Çâ»ó½ÃŰ´Â µ¥ »ç¿ëµÉ °ÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ Áö¿ø ¿É¼ÇÀ» º¸·Á¸é Microsoft °í°´Áö¿ø ȨÆäÀÌÁö¸¦ ¹æ¹®ÇØ Áֽñ⠹ٶø´Ï´Ù. | |