µ¥ÀÌÅÍ ÁýÇÕ(DataSet)Àº ¼¹öÀÇ µ¥ÀÌÅ͸¦ °¡Á®¿Í ÆíÁýµÈ ³»¿ëÀ»
Á¤È®ÇÏ°Ô ¹Ý¿µÇÏ¿© ¼¹ö·Î ÀçÀü¼ÛÇÑ´Ù. ¼¹ö¿Í ¿¬°áÀÌ ²÷¾îÁø »óÅÂ¶óµµ Á¾·á Á÷Àü¿¡ µ¿±âȸ¸ Á¦´ë·Î Çϸé
¹®Á¦°¡ ¾øÀ¸¸ç ºñ¿¬°áÇüÀ¸·Î ÈǸ¢ÇÏ°Ô µ¿ÀÛÇÑ´Ù. ±×·¯³ª ºñ¿¬°áÇüÀÇ ÀÌ·± Á¤È®¼ºÀº È¥ÀÚ¼ ¼¹ö¸¦ µ¶Â÷ÁöÇÒ
¶§¸¸ È®º¸µÇ¸ç ¿©·¯ »ç¿ëÀÚ°¡ ¼¹öÀÇ µ¥ÀÌÅ͸¦ °øÀ¯ÇÏ¸é ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù. ÀÌ°ÍÀ» µ¿½Ã¼º ¹®Á¦¶ó°í
Çϴµ¥ ¾î¶² ¹®Á¦°¡ ÀÖ´ÂÁö Å×½ºÆ®ÇØ º¸ÀÚ.
DataAdapterTest ¿¹Á¦¿¡¼ Àб⠹öÆ°À» ´©¸£¸é ¾î´ðÅÍ¿¡
ÀÇÇØ ¼¹öÀÇ tblPeople Å×À̺íÀÇ ³»¿ëÀÌ ÀÐÇôÁö¸ç ±×¸®µå¿¡ Ãâ·ÂµÈ´Ù. ÀÌ »óÅ¿¡¼ SQL ¼¹ö¸¦ ½ÇÇàÇØ ³õ°í Äõ¸®Ã¢¿¡¼ ADOTest DB¿¡ Á¢¼ÓÇØ º¸ÀÚ. Äõ¸®Ã¢µµ ÇϳªÀÇ Å¬¶óÀ̾ðÆ®À̹ǷÎ
ÇÑ ¼¹ö¿¡ µÎ ¸íÀÇ »ç¿ëÀÚ°¡ µ¿½Ã¿¡ Á¢¼ÓÇÑ °ÍÀÌ´Ù. SQL ¼¹ö¸¦ ½ÇÇàÇϱ⠹ø°Å·Ó´Ù¸é DataAdapterTest ¿¹Á¦¸¦ µÎ ¹ø ½ÇÇàÇصµ È¿°ú´Â °°´Ù.
±×¸®µå¿¡¼ ¹è¿ëÁØÀÇ À̸§À» ¿æ»ç¸¶·Î ¼öÁ¤ÇÏ¸é º°´Ù¸¥ ¹®Á¦¾øÀÌ Àß ¼öÁ¤µÈ´Ù. Ŭ¶óÀ̾ðÆ®ÀÇ
µ¥ÀÌÅÍ ÁýÇÕ¸¸ ¼öÁ¤ÇßÀ» »Ó ¾ÆÁ÷ ¼¹ö·Î´Â Àü¼ÛÇϱâ ÀüÀÌ´Ù. ÀÌ »óÅ¿¡¼ SQL ¼¹öÀÇ Äõ¸®Ã¢À¸·Î À̵¿ÇÏ¿© ´ÙÀ½ ¸í·ÉÀ» ¼öÇàÇÏ¿© ¹è¿ëÁØÀÇ À̸§À» °ÁØ»óÀ¸·Î º¯°æÇÑ´Ù. Äõ¸®Ã¢Àº ¿¬°áÇüÀ¸·Î µ¿ÀÛÇϹǷΠÁï½Ã ·¹Äڵ带 ¼öÁ¤ÇÑ´Ù.
UPDATE tblPeople SET Name = '°ÁØ»ó' WHERE Name = '¹è¿ëÁØ';
ÀÌ »óÅ¿¡¼ ´Ù½Ã ¿¹Á¦·Î µ¹¾Æ°¡ ÀúÀå ¹öÆ°À» ´·¯ ±×¸®µå¿¡¼ ÆíÁýÇÑ °ÍÀ» ¼¹ö·Î Àü¼ÛÇØ º¸ÀÚ. ´ÙÀ½ ¿¹¿Ü°¡ ¹ß»ýÇϸç Á¦´ë·Î ÀúÀåµÇÁö ¾Ê´Â´Ù.
¿Ö ÀÌ·± ¹®Á¦°¡ ¹ß»ýÇÏ´ÂÁö Ŭ¶óÀ̾ðÆ® ÄÚµåÀÇ µ¿ÀÛÀ» ÃßÀûÇØ º¸ÀÚ. Update
¸Þ¼µå´Â µ¥ÀÌÅÍ ÁýÇÕÀÇ Å×À̺íÀ» ¼ø¼´ë·Î Àоî ÁýµÈ ·¹Äڵ带 Á¶»çÇÏ¸ç ¹è¿ëÁØ ·¹ÄÚµåÀÇ À̸§ÀÌ ¿æ»ç¸¶·Î ÆíÁýµÈ °ÍÀ» ¹ß°ßÇÏ°í ´ÙÀ½ Äõ¸®¹®À»
½ÇÇàÇÑ´Ù.
UPDATE tblPeople SET Name = '¿æ»ç¸¶' WHERE Name = '¹è¿ëÁØ';
¼¹ö´Â ÀÌ Äõ¸®¹®À» ½ÇÇàÇÒ ¼ö ¾ø´Ù. ¿Ö³ÄÇÏ¸é ´Ù¸¥ »ç¿ëÀÚ¿¡ ÀÇÇØ
¹è¿ëÁØÀº ÀÌ¹Ì »ç¶óÁ® ¹ö·È°í °ÁØ»ó¸¸ ³²¾Ò±â ¶§¹®ÀÌ´Ù. ´Ù¸¥ »ç¿ëÀÚÀÇ ÆíÁýÀ¸·Î ÀÎÇØ ¼¹öÀÇ µ¥ÀÌÅ͸¦
°¡Á®¿Ã ¶§¿Í ÇöÀç »óȲÀÌ ´Þ¶óÁ® ¾÷µ¥ÀÌÆ®ÇÒ ´ë»óÀÌ »ç¶óÁ® ¹ö·È´Ù. ÀÌ°ÍÀÌ ¹Ù·Î µ¿½Ã¼ºÀÇ ¹®Á¦ÀÌ´Ù. ¹Ý´ë·Î Çصµ ¸¶Âù°¡ÁöÀε¥ ¿¹Á¦¿¡¼ ¿æ»ç¸¶·Î ¸ÕÀú ¹Ù²Ù°í SQL ¼¹ö¿¡¼
°ÁØ»óÀ¸·Î ¹Ù²Ù¾îµµ ¸¶Âù°¡Áö °á°ú°¡ ³ª¿Â´Ù.
µ¥ÀÌÅͺ£À̽º´Â ¿ø·¡ ¿©·¯ »ç¿ëÀÚ°¡ °øÀ¯ÇÏ´Â °ÍÀε¥ ºñÇØ ADO.NETÀº
µ¿½Ã Á¢¼Ó¿¡ ´ëÇÑ Ã³¸®¸¦ ÇÏÁö ¸øÇÑ´Ù. ADO.NETÀº ³«°üÀû µ¿½Ã¼º Á¦¾î Á¤Ã¥À» »ç¿ëÇÏ¸ç ¶ôÀ» °ÉÁö
¾Ê¾Æ ´Ù¸¥ »ç¿ëÀÚ°¡ ¼öÁ¤ÇÏ´Â °ÍÀ» Çã¶ôÇÑ´Ù. ³²µéÀÌ ¹Ù²Ù°Å³ª ¸»°Å³ª ³«°üÀûÀ¸·Î ±×³É ³»¹ö·Á µÎ´Â °ÍÀ̸ç
±×·¯´Ù º¸´Ï ¹®Á¦°¡ ¹ß»ýÇÑ´Ù.
¹Ý´ë °³³äÀº ºñ°üÀû µ¿½Ã¼º Á¦¾î¶ó°í Çϴµ¥ ÇÑ »ç¿ëÀÚ°¡ µ¥ÀÌÅ͸¦ ÀÐÀº ÈÄ ÀúÀåÇÒ ¶§±îÁö ¾Æ¹«µµ ÀÌ µ¥ÀÌÅ͸¦ ¾µ
¼ö ¾øµµ·Ï ¶ôÀ» °É¾î ¹ö¸®´Â °ÍÀÌ´Ù. ½±°Ô ¸»ÇØ "³»°¡
»ç¿ëÁßÀÎ µ¥ÀÌÅÍ´Â ¾Æ¹«µµ ¸ø °Çµå·Á"ÇÏ°í ¼±Æ÷ÇØ ³õ´Â °ÍÀÌ´Ù.
¶ôÀÌ °É¸° »óÅ¿¡¼´Â ¾Æ¹«µµ ÀÌ µ¥ÀÌÅ͸¦ ¾µ ¼ö ¾øÀ¸¹Ç·Î ¹®Á¦°¡ ¹ß»ýÇÒ ¿©Áö°¡ ¾ø´Ù. ±×·¯³ª
ƯÁ¤ µ¥ÀÌÅ͸¦ ÇÑ¸í¸¸ ¾µ ¼ö ÀÖ¾î µ¿½Ã¼ºÀÌ ¶³¾îÁö¹Ç·Î ªÀº ½Ã°£µ¿¾È¸¸ ¶ôÀ» °É¾î¾ß ÇÑ´Ù.
ADO.NETÀÇ ºñ¿¬°áÇü ¹æ½ÄÀº ¼¹ö¿ÍÀÇ ¿¬°áÀÌ ¿ÏÀüÈ÷ ²÷±ä »óÅ¿¡¼
µ¿ÀÛÇϱ⠶§¹®¿¡ ¶ôÀ» °É ¼ö ¾øÀ¸¸ç µû¶ó¼ ºñ°üÀû µ¿½Ã¼º Á¦¾î¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. ¼¹ö¿¡ ¿¬°áµµ ÇÏÁö
¾ÊÀº »óÅÂÀ̹ǷΠ´©°¡ ¹» ¾î¶»°Ô ¹Ù²Ùµç Âü°ßÇÒ ¿©Áö°¡ ¾ø°í ±×·¸´Ù º¸´Ï »çº»À» ÆíÁýÇÏ´Â Áß¿¡ ´Ù¸¥ »ç¿ëÀÚ°¡ ¿øº»À» ¸¶À½´ë·Î ¹Ù²ã ¹ö¸± ¼ö ÀÖ´Ù. ±×·¸´Ù¸é µ¿½Ã¼º ¹®Á¦¿¡ ´ëÇÑ ADO.NETÀÇ ÇØ°áÃ¥Àº ¹«¾ùÀϱî?
¹®Á¦°¡ ÀÖ´Ù¸é ´ç¿¬È÷ ÇØ°áÃ¥µµ ÀÖ¾î¾ß°ÚÁö¸¸ ¾ÈŸ±õ°Ôµµ ÀÌ ¹®Á¦¿¡ ´ëÇؼ´Â ÇØ°áÃ¥ÀÌ Á¦°øµÇÁö ¾Ê´Â´Ù. ¶óÀ̺귯¸®´Â ¹®Á¦°¡ ¹ß»ýÇßÀ» ¶§ ¿¹¿Ü¸¦ ´øÁö´Â °Í ¿Ü¿¡´Â ¾î¶°ÇÑ Á¶Ä¡µµ ÃëÇÏÁö ¾ÊÀ¸¸ç »ç½Ç ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö
ÀÖ´Â »ÏÁ·ÇÑ ¹æ¹ýµµ ¾ø´Ù. ¼¹ö¿¡¼ ¹«½¼ ÀÏÀÌ ÀϾ´ÂÁö ¸ð¸£´Âµ¥ ¹«½¼ ÇØ°áÃ¥ÀÌ Àְڴ°¡? ±×·¡¼ µ¿½Ã¼º ¹®Á¦´Â ÀüÀûÀ¸·Î ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ¾Ë¾Æ¼ ÇØ°áÇØ¾ß ÇÑ´Ù. ¿¹¿Ü¸¦
¹Þ¾Æ ÀÚ½ÅÀÇ °íÀ¯ ³í¸®¿¡ ¸Â°Ô ó¸®ÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù. À§ ¹®Á¦ÀÇ °æ¿ì ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ÃëÇÒ ¼ö ÀÖ´Â
ÇØ°áÃ¥Àº ´ÙÀ½ µÎ °¡Áö Á¤µµ¸¦ »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù.
l ¿ì¼±Àº ¿¹¿Ü°¡ ¹ß»ýÇÑ
¹®ÀåÀ» ¹«½ÃÇØ ¹ö¸®´Â °ÍÀÌ´Ù. ¹è¿ëÁØÀÌ ¾ø¾îÁ® ¹ö·È´Ù¸é ÀÌ ·¹Äڵ忡 ´ëÇÑ ¾÷µ¥ÀÌÆ®¸¦ ½ÇÇàÇÏÁö ¾Ê´Â´Ù. ÀÌ ¹æ¹ý´ë·Î¶ó¸é ¸ÕÀú ÆíÁýÇÑ ÂÊÀÇ °ªÀÌ À¯ÁöµÇ¸ç ¹è¿ëÁØÀº ¼¹ö°¡ ¹Ù²Û °ÁØ»óÀ¸·Î ³²´Â´Ù.
l ¿¹¿Ü°¡ ¹ß»ýÇÑ ¹®ÀåÀ»
°Á¦·Î ½ÇÇàÇÑ´Ù. ´©±º°¡°¡ ¹è¿ëÁØÀ» °ÁØ»óÀ¸·Î ¹Ù²Ù¾ú´Ù¸é ´Ù½Ã ¿æ»ç¸¶·Î ¹Ù²Ù¾î ¹ö¸°´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é ¿ø·¡ ·¹Äڵ带 ãÀ» ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÇÊ¿äÇѵ¥ ±âº»Å°¿¡ ŸÀÓ½ºÅÆÇÁ³ª °íÀ¯ÀÇ ID¸¦ ¼û°Ü µÎ¾î¾ß ÇÑ´Ù.
ÀÌ ¿Ü¿¡ Á¦ 3 ÀÇ ¹æ¹ýµµ »ý°¢ÇØ º¼ ¼ö ÀÖÁö¸¸ ¾î¶² ¹æ¹ýÀ» ¾²µç
µÑ Áß ÇϳªÀÇ ¾÷µ¥ÀÌÆ®°¡ ¼Õ½ÇµÇ´Â °ÍÀº ¾î¿ ¼ö ¾ø´Ù. ÀüÈÄÀÇ °ª Áß ¾î¶² °ÍÀ» ÀÎÁ¤ÇÏ´À³ÄÀÇ Â÷ÀÌ°¡
ÀÖÀ» »ÓÀÌ´Ù. Á¤ ¹®Á¦°¡ µÈ´Ù¸é ¿¹¿Ü 󸮱⿡¼ ´ëÈ»óÀÚ¸¦ ¶ç¿ö »ç¿ëÀÚ¿¡°Ô µÑ Áß ¾î¶² °ªÀ» ÃëÇÒ °ÍÀÎÁö¸¦
¹°¾îº¸´Â ¼ö¹Û¿¡ ¾ø´Ù. ³í¸®ÀûÀ¸·Î ÇØ°áÇÒ ¹æ¹ýÀÌ ¾øÀ¸´Ï »ç¿ëÀÚ¿¡°Ô Ã¥ÀÓÀ» ¶° ³Ñ±â´Â °ÍÀÌ´Ù. ´ÙÇàÈ÷ ¿¹¿Ü·Î Àü´ÞµÇ´Â Àμö¿¡´Â ¿¹¿ÜÀÇ ¿øÀο¡ ´ëÇÑ »ó¼¼ÇÑ Á¤º¸°¡ Æ÷ÇԵǾî ÀÖ´Ù.
ÀÌ ¹®Á¦´Â ºñ¿¬°áÇüÀÇ ´ÜÁ¡À̶ó±â º¸´Ù´Â »ç¿ë ¿ëµµ°¡ ´Ù¸¥ °ÍÀ¸·Î ÀÌÇØÇØ¾ß ÇÑ´Ù.
µ¿½Ã¼º ¹®Á¦¸¦ ¿øõÀûÀ¸·Î ¹æÁöÇÏ·Á¸é ¾î¿ ¼ö ¾øÀÌ ¿¬°áÇüÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ¿¬°áÇüÀº ¼öÁ¤ÇÒ
¶§¸¶´Ù ¶ôÀ» °É ¼ö Àֱ⠶§¹®¿¡ µ¿½Ã¼º ¹®Á¦¸¦ ¾î´À Á¤µµ ÇØ°áÇÒ ¼ö ÀÖ´Ù. ´Ü, ¿¬°áÇüµµ ¿ÏÀüÇÑ ÇØ°áÀº ½±Áö ¾Ê´Ù. ±ØµµÀÇ ÀÏ°ü¼ºÀ» È®º¸ÇÏ·Á¸é ¼¹öÀÇ
Àá±Ý ¼öÁØÀ» ³ô¿©¾ß Çϴµ¥ ÀÌ·¸°Ô µÇ¸é ¼º´ÉÀÌ ¶³¾îÁø´Ù.
µ¿½Ã¼º ¹®Á¦¸¦ ¿Ïº®ÇÏ°Ô ÇØ°áÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ¼¹ö¸¦ ²Ç²Ç ¼û°ÜµÎ°í È¥ÀÚ ¾²´Â °Í ¹Û¿¡ ¾ø´Ù. ±×·¯³ª µ¥ÀÌÅͺ£À̽º¶õ ¿øÄ¢ÀûÀ¸·Î °øÀ¯ÇÏ´Â °ÍÀÌ°í °øÀ¯¿¡ ÀÇÇØ °¡Ä¡°¡ ¹ßÈֵǴ °ÍÀÌ¾î¼ È¥ÀÚ¼ µ¶Á¡ÇÒ ¹Ù¿¡¾ß
±»ÀÌ µ¢Ä¡ Å« µ¥ÀÌÅͺ£À̽º¸¦ ¾µ ÀÌÀ¯°¡ ¾ø´Ù. µ¿½Ã¼º°ú ÀÏ°ü¼º ÀÌ µÎ °¡Áö´Â Å»ýÀûÀ¸·Î ¹èŸÀû ¼Ó¼ºÀ»
°¡Á® ¾ç¸³ÇÒ ¼ö ¾øÀ¸¸ç °í°¡ÀÇ »ó¿ë DBMSµµ Àû´çÈ÷ ±ÕÇüÀ» ¸ÂÃß¾î ŸÇùÇÔÀ¸·Î½á ¹®Á¦¸¦ ÃÖ¼ÒÈÇÒ »ÓÀÌ´Ù.
ºñ¿¬°áÇü¿¡¼´Â µÎ °³ ÀÌ»óÀÇ ´Ù¸¥ »çº»ÀÌ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. µÎ ¸íÀÇ
»ç¿ëÀÚ°¡ ¼¹öÀÇ µ¥ÀÌÅ͸¦ °¡Á®°£ ÈÄ °¢ÀÚ ³ª¸§´ë·Î ÆíÁýÇÏ¸é µÎ °³ÀÇ »çº»ÀÌ »ý¼ºµÇ´Âµ¥ ¾çÂÊ¿¡¼ µ¥ÀÌÅ͸¦ µû·Î ÀúÀåÇÏ¸é ¸ÕÀú ÀúÀåÇÑ ÂÊÀÇ µ¥ÀÌÅÍ°¡
»ç¶óÁö´Â µ¿½Ã¼º ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ÀÌ ¹®Á¦¸¦ ¿Ïº®ÇÏ°Ô ÇØ°áÇÒ ¼ö´Â ¾øÁö¸¸ µÎ »çº»À» Çϳª·Î º´ÇÕÇÑ ÈÄ
ÀúÀåÇÏ¸é ¿ÏÈÇÒ ¼ö´ÂÀÖ´Ù.
º´ÇÕ °úÁ¤¿¡¼ µÑ Áß ¾î´À °ªÀ» äÅÃÇÒ °ÍÀÎÁö ¹Ì¸® ŸÇùÇϰųª Á¤ÇØÁø ±ÔÄ¢¿¡ µû¶ó ÇÑÂÊ¿¡ ¿ì¼±±ÇÀ» ÁÙ ¼ö ÀÖ¾î
Àû¾îµµ º´ÇÕÀÌ ¿Ï·áµÈ ÈÄ¿¡´Â ´õ ÀÌ»óÀÇ Ãæµ¹ÀÌ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. DataTable°ú DataSet Ŭ·¡½º¿¡ º´ÇÕ ¸Þ¼µå°¡ Á¦°øµÇ´Âµ¥ DataSetÀÇ ¸Þ¼µå
À§ÁÖ·Î ¾Ë¾Æº¸ÀÚ.
public void Merge (DataSet dataSet [,bool
preserve,MissingSchemaAction Action])
public void Merge (DataTable table [,bool
preserve,MissingSchemaAction Action])
public void Merge (DataRow[] rows [,bool
preserve,MissingSchemaAction Action])
µ¥ÀÌÅÍ ÁýÇÕ³¢¸® º´ÇÕÇÒ ¼öµµ ÀÖ°í Å×ÀÌÅÍ ÁýÇÕÀÇ Å×À̺í Çϳª¸¦ º´ÇÕÇÒ ¼öµµ ÀÖ´Ù. Å×ÀÌºíº¸´Ù ´õ ÀÛÀº ´ÜÀ§ÀÎ ÇàÀÇ ÁýÇÕÀ» º´ÇÕÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ´ÙÀ½
¿¹Á¦´Â µ¥ÀÌÅÍ ÁýÇÕ°ú Å×À̺íÀ» º´ÇÕÇÑ´Ù.
MergeTest |
using
System; ~ using System.Windows.Forms; namespace
MergeTest { public
partial class Form1 : Form { private
SqlConnection Con; private
SqlDataAdapter Adpt; private
DataSet DbADOTest; private
DataTable tblPeople2; public
Form1() { InitializeComponent(); } private
void btnMerge_Click(object sender, EventArgs e) { Con
= new SqlConnection(); Con.ConnectionString
= "Server=(local);database=ADOTest;" + "Integrated
Security=true"; Adpt
= new SqlDataAdapter("SELECT * FROM tblPeople", Con); DbADOTest
= new DataSet("ADOTest"); Adpt.Fill(DbADOTest,
"tblPeople"); tblPeople2
= MakePeopleTable(); DbADOTest.Merge(tblPeople2); dataGridView1.DataSource
= DbADOTest.Tables["tblPeople"]; } private
DataTable MakePeopleTable() { DataTable
tblPeople = new DataTable("tblPeople"); DataColumn
col; DataRow
row; //
¿ µî·Ï col
= new DataColumn("Name", typeof(String)); col.MaxLength
= 10; col.AllowDBNull
= false; col.Unique
= true; tblPeople.Columns.Add(col); tblPeople.PrimaryKey
= new DataColumn[] { col }; col
= new DataColumn("Age", typeof(Int32)); col.AllowDBNull
= false; tblPeople.Columns.Add(col); col
= new DataColumn("Male", typeof(bool)); col.AllowDBNull
= false; tblPeople.Columns.Add(col); //
Çà »ðÀÔ row
= tblPeople.NewRow(); row["Name"]
= "Á¤¿ì¼º"; row["Age"]
= 41; row["Male"]
= true; tblPeople.Rows.Add(row); row
= tblPeople.NewRow(); row["Name"]
= "¼ÛÇý±³"; row["Age"]
= 33; row["Male"]
= false; tblPeople.Rows.Add(row); tblPeople.AcceptChanges(); return
tblPeople; } } } |
¾î´ðÅ͸¦ ÅëÇØ SQL ¼¹ö·ÎºÎÅÍ ÀÐÀº µ¥ÀÌÅÍ¿Í Äڵ忡¼ Á÷Á¢ »ý¼ºÇÑ
µ¥ÀÌÅ͸¦ º´ÇÕÇØ º¸¾Ò´Ù. MakePeopleTable ¸Þ¼µå´Â ´Ù¸¥ ÇàÀ» Ãß°¡Çϴµ¥ ÀÌ ¸Þ¼µå°¡ »ý¼ºÇÏ´Â
Å×À̺íÀ» ´Ù¸¥ »ç¿ëÀÚ°¡ ÆíÁýÇÑ µ¥ÀÌÅͶó°í °¡Á¤ÇÏÀÚ. Á¤¿ì¼º°ú ¼ÛÇý±³¸¦ Ãß°¡Ç쵂 Á¤¿ì¼ºÀº ³ªÀÌ°¡ ±âÁ¸
µ¥ÀÌÅÍ¿Í ´Ù¸£°í ¼ÛÇý±³´Â »õ·Î Ãß°¡µÇ¾ú´Ù. Merge ¸Þ¼µå·Î ÀÌ Å×À̺íÀ» µ¥ÀÌÅÍ ÁýÇÕ¿¡ º´ÇÕÇÑ ÈÄ
±×¸®µå·Î Ãâ·ÂÇß´Ù.
¾ÆÁÖ Àß º´ÇյȴÙ. Merge ¸Þ¼µå´Â ¿øº»°ú »õ Å×À̺íÀÇ Å°¸¦ ºñ±³ÇÏ¿©
º´ÇÕÇÑ´Ù. Å°°¡ °°À» °æ¿ì »õ µ¥ÀÌÅÍ·Î µ¤¾î ¾²´Âµ¥ Á¤¿ì¼ºÀº ¿øº»¿¡
36¼¼¶ó°í µÇ¾î ÀÖÁö¸¸ »õ Å×ÀÌºí¿¡´Â 41¼¼¶ó°í µÇ¾î ÀÖÀ¸¹Ç·Î º´ÇÕ¿¡ ÀÇÇØ 41¼¼·Î ¼öÁ¤µÈ´Ù. ±âº»Å°°¡ ´Ù¸£¸é,
Áï ¿øº» Å×ÀÌºí¿¡ ¾ø´Â ÇàÀÌ¸é »õ·Î Ãß°¡µÈ´Ù. ¼ÛÇý±³´Â ¿øº»¿¡ ¾ø¾úÀ¸¹Ç·Î Å×ÀÌºí ³¡¿¡ Ãß°¡µÈ´Ù. ¿øº»¿¡ ÀÖ´ø °í¼Ò¿µ, ±èÅÂÈñ, ¹è¿ëÁØÀº
º¯ÇÔ¾øÀÌ À¯ÁöµÈ´Ù.
Merge ¸Þ¼µåÀÇ µÎ ¹ø° Àμö
preserve´Â ¿øº»ÀÇ °ª°ú »õ Å×À̺íÀÇ °ªÀÌ ´Ù¸¦ ¶§ ¿øº»ÀÇ °ªÀ» À¯ÁöÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. »ý·«½Ã
µðÆúÆ®ÀÎ false°¡ Àû¿ëµÇ¹Ç·Î º´ÇյǴ Å×À̺íÀÇ »õ °ªÀ¸·Î µ¤¾î ½áÁø´Ù. º´ÇյǴ °ªÀ» ´õ ÃÖ±Ù°ªÀ¸·Î ÀÎÁ¤ÇÏ´Â °ÍÀÌ´Ù. ÀÌ Àμö¸¦ true·Î º¯°æÇÏ¸é ¿øº» Å×ÀÌºí¿¡ ÀÖ´Â Á¤¿ì¼ºÀÇ ¿ø·¡ ³ªÀÌ°¡ À¯ÁöµÇ°í º´ÇյǴ Å×À̺íÀÇ °ªÀÌ ¹«½ÃµÈ´Ù. Merge ¸Þ¼µå¸¦ ´ÙÀ½°ú °°ÀÌ È£ÃâÇØ º¸ÀÚ.
DbADOTest.Merge(tblPeople2, true,
MissingSchemaAction.Add);
Á¤¿ì¼ºÀÇ ³ªÀÌ°¡ ¿øº»°ªÀÎ 36¼¼¸¦ ±×´ë·Î À¯ÁöÇÑ´Ù. preserve Àμö´Â º´ÇÕÇÏ´Â ÂÊÀÇ °ªÀ» ÃëÇÒ °ÍÀÎÁö º´ÇյǴ ÂÊÀÇ °ªÀ» ÃëÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÔÀ¸·Î½á Ãæµ¹µÇ´Â
°ª Áß Çϳª¸¦ ¼±ÅÃÇÒ ±âȸ¸¦ ºÎ¿©ÇÑ´Ù.
¾Æ¹« Å×ÀÌºí³¢¸® º´ÇÕÀÌ °¡´ÉÇÏÁö´Â ¾ÊÀ¸¸ç ½ºÅ°¸¶°¡ °°°Å³ª ¾Æ´Ï¸é Àû¾îµµ ÀÚµ¿ º¯È¯ÀÌ °¡´ÉÇÒ Á¤µµ·Î À¯»çÇØ¾ß ÇÑ´Ù. À§ ¿¹Á¦¿Í °°ÀÌ µÎ Å×À̺íÀÇ ½ºÅ°¸¶°¡ ¿ÏÀüÈ÷ °°À¸¸é ÀÌ»ó ¾øÀÌ Àß º´ÇÕµÇÁö¸¸ ¿ÀÇ Å¸ÀÔÀÌ ´Ù¸£¸é º´ÇÕµÇÁö ¾Ê´Â´Ù. »õ Å×À̺íÀÇ Age Çʵ带 ¹®ÀÚ¿ ŸÀÔÀ¸·Î ¹Ù²Û ÈÄ ½ÇÇàÇÏ¸é ¿¹¿Ü°¡
¹ß»ýÇÑ´Ù. ¹®ÀÚ¿°ú Á¤¼ö´Â ȣȯµÇÁö ¾ÊÀ¸¹Ç·Î º´ÇյǴ ÂÊÀÇ ¹®ÀÚ¿À» Á¤¼ö·Î ¹Ù²ã ³ÖÀ» ¼ö ¾ø´Ù.
Åë»ó °°Àº µ¥ÀÌÅÍ ¼Ò½º¿¡¼ ÀÐÀº ´Ù¸¥ »çº»ÀÎ °æ¿ì°¡ °¡Àå ¸¹Àºµ¥ ÀÌ·± °æ¿ì´Â ½ºÅ°¸¶°¡ ¿ÏÀüÈ÷ ÀÏÄ¡ÇϹǷΠº´ÇÕ¿¡
¹®Á¦°¡ ¾ø´Ù. ´ÙÇàÈ÷ ¾à°£ÀÇ À¯¿¬¼ºÀÌ ÀÖ¾î¼ »õ Å×ÀÌºí¿¡ ¿øº»¿¡ ¾ø´Â ¿ÀÌ Ãß°¡µÇ¾î ÀÖÀ» °æ¿ì¿¡µµ ¾î´À
Á¤µµ º´ÇÕÀº °¡´ÉÇÏ´Ù. Merge ¸Þ¼µåÀÇ ¼¼ ¹ø° Àμö´Â ½ºÅ°¸¶°¡ ´Ù¸¦ °æ¿ì ¾î¶»°Ô ó¸®ÇÒ °ÍÀΰ¡¸¦
ÁöÁ¤ÇÑ´Ù.
°ª |
¼³¸í |
Add |
»õ Å×À̺íÀÇ ½ºÅ°¸¶ Á¤º¸¸¦ Ãß°¡ÇÑ´Ù. ÀÌ °ªÀÌ µðÆúÆ®ÀÌ´Ù. |
AddWithKey |
»õ Å×À̺íÀÇ ½ºÅ°¸¶¿Í ±âº» Å° Á¤º¸¸¦ Ãß°¡ÇÑ´Ù. |
Error |
¿¹¿Ü¸¦ ¹ß»ý½ÃŲ´Ù. |
Ignore |
»õ ½ºÅ°¸¶ Á¤º¸¸¦ ¹«½ÃÇÑ´Ù. |
»õ ¿À» ¿øº»¿¡ Ãß°¡ÇÒ ¼öµµ ÀÖ°í ¹«½ÃÇÒ ¼öµµ ÀÖ´Ù. ½ºÅ°¸¶°¡ ´Þ¶ó¼´Â
¾ÈµÈ´Ù¸é ¾Æ¿¹ ¿¹¿Ü¸¦ ÀÏÀ¸Å°µµ·Ï ÇÏ¿© º´ÇÕÀ» °ÅºÎÇÒ ¼öµµ ÀÖ´Ù. MakePeopleTable ¸Þ¼µå¸¦
¼öÁ¤ÇÏ¿© Á¦ÀÏ µÚ¿¡ ÀüȹøÈ£ Ä÷³À» Ãß°¡ÇØ º¸ÀÚ.
private DataTable MakePeopleTable() {
....
col
= new DataColumn("Tel", typeof(string));
col.AllowDBNull
= true;
tblPeople.Columns.Add(col);
//
Çà »ðÀÔ
row
= tblPeople.NewRow();
row["Name"]
= "Á¤¿ì¼º";
row["Age"]
= 41;
row["Male"]
= true;
row["tel"]
= "111-2222";
tblPeople.Rows.Add(row);
row
= tblPeople.NewRow();
row["Name"]
= "¼ÛÇý±³";
row["Age"]
= 33;
row["Male"]
= false;
row["tel"]
= "333-4444";
tblPeople.Rows.Add(row);
tblPeople.AcceptChanges();
return
tblPeople;
}
¿¹Á¦ DB¿¡´Â ÀüȹøÈ£°¡ ¾ø¾î µÎ Å×À̺íÀÇ ½ºÅ°¸¶°¡ ´Þ¶óÁ³´Ù. Merge ¸Þ¼µå È£Ãâ¹®Àº ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØ º¸ÀÚ.
DbADOTest.Merge(tblPeople2, false,
MissingSchemaAction.Add);
preserve´Â false·Î
¹Ù²Ù¾ú°í ½ºÅ°¸¶ ¿É¼ÇÀº Add·Î ÁöÁ¤Çß´Ù. »õ Å×À̺íÀÇ Ãß°¡¿ÀÌ
¿øº» Å×ÀÌºí¿¡ Ãß°¡µÇ¸ç º´ÇÕµÈ ·¹ÄÚµå´Â ÀÌ ¿ÀÇ Á¤º¸¸¦ °¡Áø´Ù.
Merge ¸Þ¼µå´Â º´ÇÕÇÒ ¶§ Á¦¾à Á¶°ÇÀ» Á¡°ËÇÏÁö ¾ÊÁö¸¸ º´ÇÕÀÌ
¿Ï·áµÈ ÈÄ Á¦¾à Á¶°ÇÀ» ÀÏ°ý Á¡°ËÇÑ´Ù. ±×·¡¼ ¿øº» Å×À̺íÀÇ ±âÁ¸ Ç൵ Ãß°¡µÈ ¿ÀÇ Á¦¾à Á¶°ÇÀ» À§¹ÝÇؼ´Â
¾ÈµÈ´Ù. »õ·Î Ãß°¡µÈ Tel ÇʵåÀÇ AllowDBNull ÇÁ·ÎÆÛƼ°¡ true·Î ÁöÁ¤µÇ¾î ÀÖ¾î NULL°ªÀ» Çã¿ëÇϴµ¥ ÀÌ °ªÀ» false·Î ¹Ù²Ù¸é ¿¹¿Ü°¡ ¹ß»ýÇÑ´Ù. ¿øº» Å×À̺íÀÇ ±âÁ¸ ·¹ÄÚµå´Â ÀüȹøÈ£ Á¤º¸°¡ ¾ø±â ¶§¹®ÀÌ´Ù. Merge ¸Þ¼µå
È£ÃâÀ» ´ÙÀ½°ú °°ÀÌ º¯°æÇØ º¸ÀÚ.
DbADOTest.Merge(tblPeople2, false,
MissingSchemaAction.Ignore);
º´ÇÕÀº µÇÁö¸¸ »õ·Î Ãß°¡µÈ ¿ÀÌ ¹«½ÃµÇ°í ³ªÅ¸³ªÁö ¾Ê´Â´Ù. Error·Î
¹Ù²Ù¸é ¾Æ¿¹ ¿¹¿Ü ó¸®µÇ¾î º´ÇÕÀÌ °ÅºÎµÈ´Ù. ÀÌ °æ¿ì´Â ½ºÅ°¸¶°¡ ¹Ýµå½Ã ÀÏÄ¡ÇÏ´Â Å×ÀÌºí³¢¸®¸¸ º´ÇÕÇÒ
¼ö ÀÖÀ¸¸ç Á¦ÀÏ ÀÌ»óÀûÀÌ°í ÀϹÝÀûÀÌ´Ù. ¾Ö¸ÅÇÏ°Ô º´ÇÕÇÏ´À´Ï ¾Æ¿¹ ¿¡·¯·Î ó¸®ÇØ ¹ö¸®´Â °ÍÀÌ ´õ ³´´Ù.
Merge ¸Þ¼µå¸¦ ½Ç¹«¿¡ »ç¿ëÇÏ·Á¸é À̺¸´Ù ´õ º¹ÀâÇÑ »óȲÀ» °í·ÁÇؾß
ÇÑ´Ù. ¿ÀÇ ¸ñ·ÏÀº °°Áö¸¸ ÀϺΠ¿ÀÇ Å¸ÀÔÀÌ ¾à°£ ´Ù¸¥ °æ¿ìµµ ÀÖ°í ±âº»Å°°¡ ´Ù¸£°Ô ¼³Á¤µÈ °æ¿ìµµ ÀÖ´Ù. ÀÌ·± ¹®Á¦°¡ ¹ß»ýÇÏ¸é ¿¹¿Üµµ ¹ß»ýÇÏ°í MergeFailed À̺¥Æ®µµ
¹ß»ýÇϴµ¥ Äڵ忡¼ ¿¹¿Ü »óȲÀ» ÀûÀýÇÏ°Ô Á¶Á¤ÇØ¾ß ÇÑ´Ù.
¶Ç ÆíÁýÁßÀÎ Å×ÀÌºí³¢¸® º´Çսà °¢ ¿ÀÇ ¹öÀü °ü¸® ±ÔÄ¢°ú Çà »óÅÂÀÇ º¯Èµµ º¹ÀâÇÏ´Ù. preserve°¡ trueÀÌ¸é ¿øº»°ªÀ» µ¤¾î¾²Áö ¾Ê´Â´Ù°í Çߴµ¥
³»ºÎ ±ÔÄ¢Àº À̺¸´Ù ´õ º¹ÀâÇÏ´Ù. ¿øº»ÀÇ Current ¹öÀüÀº
±×´ë·Î À¯ÁöµÇÁö¸¸ Original ¹öÀüÀÇ °ªÀº ¿©ÀüÈ÷ º¯°æµÇ¸ç ÇàÀÇ
RowState´Â Modified·Î ¹Ù²ï´Ù.
ÇàÀÇ »óÅ¿¡ µû¶ó ¾î¶² ¹öÀüÀÌ ¾îµð·Î ´ëÀԵȴٴ »ó¼¼ÇÑ ±ÔÄ¢ÀÌ MSDN¿¡
Àß ¼³¸íµÇ¾î ÀÖÁö¸¸ ÀÌ ±ÔÄ¢À» ¼÷ÁöÇÏ¿© ¹Ì¸® °á°ú¸¦ ¿¹ÃøÇÏ´Â °ÍÀº ¾î·Æ´Ù. ÀÌ·± º¹ÀâÇÑ ±ÔÄ¢Àº ¾Ö½á
¿Ü¿ï·Á°í ÇÏ´Â °Íº¸´Ù ½Ç¹« »óȲ¿¡¼ ÀÏ´Ü º´ÇÕÇØ º¸°í ¿øÇÏ´Â °á°ú°¡ ¸Â´ÂÁö È®ÀÎÇØ º¸´Â °ÍÀÌ ÁÁ´Ù. º´ÇÕ
±ÔÄ¢ÀÌ ¾Æ¹«¸® º¹ÀâÇÏ´õ¶óµµ »ó½ÄÀ» ¹þ¾î³ªÁö ¾Ê´Â ¼öÁØÀ̹ǷΠ±â´ëÇÑ ´ë·Î µ¿ÀÛÇÒ È®·üÀÌ ³ô´Ù.
À¯È¿¼º Á¡°ËÀ̶õ »õ·Î ÀÔ·ÂµÈ °ªÀÌ °ú¿¬ Á¦´ë·Î µÈ °ªÀÎÁö °Ë»çÇÔÀ¸·Î½á µ¥ÀÌÅÍÀÇ ¿ÏÀü¼ºÀ» ³ôÀÌ´Â ±â¼úÀÌ´Ù. ¹é¿£µåÀÇ ¼¹öµµ Á¦¾àÀ̳ª Æ®¸®°Å µî ¹«°á¼ºÀ» À¯ÁöÇϱâ À§ÇÑ ¿©·¯ °¡Áö ÀåÄ¡¸¦ Á¦°øÇÑ´Ù. ±×·¯³ª ¼¹öÀÇ ÀåÄ¡´Â ´ÙºÐÈ÷ Çü½ÄÀûÀÌ¾î¼ Áߺ¹ ¿©ºÎ³ª °ªÀÇ ¹üÀ§ µîÀ» ±â°èÀûÀ¸·Î Á¡°ËÇÒ ¼ö´Â ÀÖÁö¸¸ ÀÀ¿ë ÇÁ·Î±×·¥
°íÀ¯ÀÇ À¯È¿¼º±îÁö °Ë»çÇÏÁö´Â ¸øÇÑ´Ù. ¿¹¸¦ µé¾î °³¼ö³ª Á¡¼ö°¡ Çã°¡µÈ ¹üÀ§ÀÇ °ªÀÎÁö ÆľÇÇÒ ¼ö ÀÖÁö¸¸
Áֹεî·Ï¹øÈ£³ª »óÇ° Äڵ尡 Á¦´ë·Î µÈ °ÍÀÎÁö±îÁö´Â Á¡°ËÇÒ ¼ö ¾ø´Ù.
¼¹ö°¡ Áö¿øÇÏÁö ¸øÇÏ´Â À¯È¿¼º Á¡°ËÀº Ŭ¶óÀ̾ðÆ®°¡ Á÷Á¢ ÇØ¾ß ÇÑ´Ù. ¼¹ö¿¡°Ô
¸ðµç °ÍÀ» ¶°³Ñ±âÁö ¾ÊÀ½À¸·Î½á ¼¹öÀÇ ºÎ´ãÀ» ´ú¾îÁÙ ¼ö ÀÖ°í À߸øµÈ µ¥ÀÌÅÍ´Â ¾Æ¿¹ ¼¹ö·Î Àü¼ÛÇÏÁö ¾ÊÀ¸¹Ç·Î½á ³×Æ®¿÷ Æ®·¡ÇÈÀ» ÁÙ¿© Àü¹ÝÀûÀÎ ¼º´É
Çâ»ó¿¡ µµ¿òÀÌ µÈ´Ù. À¯È¿¼º Á¡°ËÀº ¼¹ö¿Í Ŭ¶óÀ̾ðÆ®°¡ ÇùÁ¶ÀûÀ¸·Î ³ª´©¾î ÇÏ´Â °ÍÀÌ ÀÌ»óÀûÀÌ´Ù. Å×À̺íÀÇ µ¥ÀÌÅÍ°¡ ÆíÁýµÉ ¶§¸¶´Ù ´ÙÀ½ 4°³ÀÇ À̺¥Æ®°¡ ¹ß»ýÇϴµ¥
ÀÌ À̺¥Æ®¿¡¼ ÀÔ·ÂµÈ °ªÀ» Á¡°ËÇÑ´Ù.
l ColumnChanging, ColumnChanged : Ä÷³ÀÇ °ªÀÌ ÆíÁýµÉ ¶§¸¶´Ù ¹ß»ýÇÑ´Ù. ing À̺¥Æ®´Â ÆíÁýÁß¿¡ ¹ß»ýÇϸç ed À̺¥Æ®´Â ÆíÁýÀÌ ¿Ï·áµÈ ÈÄ¿¡
¹ß»ýÇÑ´Ù. À¯È¿¼º Á¡°ËÀº °ªÀÌ È®Á¤µÇ±â Àü¿¡ ÇØ¾ß ÇϹǷΠÁÖ·Î ing
À̺¥Æ®¿¡¼ ó¸®ÇÑ´Ù.
l RowChanging, RowChanged : ÇàÀÌ ÆíÁýµÉ ¶§¸¶´Ù ¹ß»ýÇÑ´Ù. ·¹ÄÚµåÀÇ
Ä÷³ Áß Çϳª°¡ ÆíÁýµÉ ¶§¸¶´Ù ¹ß»ýÇÏÁö¸¸ ¾î¶² ¿ÀÌ ÆíÁýµÇ°í ÀÖ´Ù´Â Á¤º¸´Â Àü´ÞµÇÁö ¾Ê´Â´Ù. ÆíÁýÁß¿¡
¹ß»ýÇÏ´Â ing ¸Þ½ÃÁö¿Í ÆíÁý ¿Ï·á ÈÄ¿¡ ¹ß»ýÇÏ´Â ed ¸Þ½ÃÁö°¡
ÀÖ´Ù.
¿ÀÇ °ªÀÌ ¹Ù²ð ¶§¸¶´Ù À¯È¿¼ºÀ» Á¡°ËÇÏ·Á¸é ColumnChanging À̺¥Æ®°¡
ÀûÇÕÇϸç ÇàÀÇ ¸ðµç ¿ÀÌ ´Ù ÆíÁýµÈ ÈÄ¿¡ ÇѲ¨¹ø¿¡ À¯È¿¼ºÀ» Á¡°ËÇѴٰųª ´Ù¸¥ ¿°úÀÇ °ü°è±îÁö °í·ÁÇØ¾ß ÇÏ´Â °æ¿ì´Â RowChanging À̺¥Æ®°¡ ÀûÇÕÇÏ´Ù. ed À̺¥Æ®´Â ÆíÁýµÈ ÈÄÀÇ
ÈÄ¼Ó Á¶Ä¡°¡ ÇÊ¿äÇÒ ¶§ ó¸®Çϴµ¥ »ç½Ç»ó º°·Î ¾µ ÀÏÀÌ ¾ø´Ù. ÀÌ¿Ü¿¡ ÇàÀ» »èÁ¦ÇÒ ¶§ ¹ß»ýÇÏ´Â RowDeleting, RowDeleted À̺¥Æ®µµ ÀÖ´Ù.
Validation |
using System;
~ using System.Windows.Forms; using
System.Data.SqlClient; namespace
Validation { public
partial class Form1 : Form { private
SqlConnection Con; private
SqlDataAdapter Adpt; DataTable
tblPeople; public
Form1() { InitializeComponent(); } private
void Form1_Load(object sender, EventArgs e) { Con
= new SqlConnection(); Con.ConnectionString
= "Server=(local);database=ADOTest;" + "Integrated
Security=true"; Adpt
= new SqlDataAdapter("SELECT * FROM tblPeople", Con); tblPeople
= new DataTable("tblPeople"); tblPeople.ColumnChanging
+= new
DataColumnChangeEventHandler(tblPeople_ColumnChanging); tblPeople.RowChanging
+= new
DataRowChangeEventHandler(tblPeople_RowChanging); Adpt.Fill(tblPeople); dataGridView1.DataSource
= tblPeople; } void
tblPeople_ColumnChanging(object sender, DataColumnChangeEventArgs e) { if
(e.Column.ColumnName == "Age") { if
((int)e.ProposedValue < 0 || (int)e.ProposedValue > 100) { e.Row.SetColumnError("Age",
"³ªÀÌ´Â 0 ~ 100 »çÀÌ¿©¾ß ÇÕ´Ï´Ù."); }
else { e.Row.SetColumnError("Age",
""); } } } void
tblPeople_RowChanging(object sender, DataRowChangeEventArgs e) { if
((bool)e.Row["Male"] == false) { if
((int)e.Row["Age"] > 40) { e.Row.SetColumnError("Age",
"¿©¼ºÀÇ ³ªÀÌ´Â 40¼¼ ÀÌÇÏ¿©¾ß ÇÕ´Ï´Ù."); }
else { e.Row.SetColumnError("Age",
""); } } } } } |
Form1_Load À̺¥Æ®¿¡¼
tblPeople Å×À̺íÀ» ÀÐ¾î ±×¸®µå·Î Ãâ·ÂÇß´Ù. ±×¸®°í µÎ °³ÀÇ ing À̺¥Æ®¿¡ ´ëÇÑ Çڵ鷯¸¦ µî·ÏÇÏ¿´´Ù. À̺¥Æ®¸¦ ó¸®ÇÏÁö ¾Ê°Å³ª
Çڵ鷯¿¡¼ º°´Ù¸¥ Á¶Ä¡¸¦ ÃëÇÏÁö ¾ÊÀ¸¸é »ç¿ëÀÚ°¡ ¾î¶² °ªÀ» ÀÔ·ÂÇϵçÁö ¸¸»ç OKÀ̹ǷΠÀ߸øµÈ °ªÀÌ ÀԷµÉ
¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î ³ªÀÌ¿¡ -10À» ÀÔ·ÂÇϰųª 200°°Àº Å͹«´Ï¾ø´Â °ªÀ» ÀÔ·ÂÇÏ´Â °Íµµ °¡´ÉÇØ ÀÌ´ë·Î µÎ¸é µ¥ÀÌÅÍ°¡ ¾û¸ÁÀÌ µÉ ¼öµµ ÀÖ´Ù.
À߸øµÈ µ¥ÀÌÅͳª ³í¸®ÀûÀ¸·Î ÀÇ¹Ì ¾ø´Â °ªÀ» ¹æÁöÇÏ·Á¸é À̺¥Æ® Çڵ鷯¿¡¼ ÀԷ°ªÀ» °¨½ÃÇØ¾ß ÇÑ´Ù. ´ÜÀÏ ¿ÀÇ °ªÀ» °¨½ÃÇϱâ À§Çؼ´Â ColumnChanging À̺¥Æ®°¡
ÀûÇÕÇÏ´Ù. DataColumnChangeEventArgs Àμö°¡ Àü´ÞµÇ´Âµ¥ ÀÌ °´Ã¼ÀÇ ´ÙÀ½ ÇÁ·ÎÆÛƼ¸¦
ÅëÇØ ¾î¶² ·¹ÄÚµåÀÇ ¾î¶² ¿¿¡ ¹«½¼ °ªÀÌ ´ëÀԵǾú´ÂÁö ¾Ë ¼ö ÀÖ´Ù.
ÇÁ·ÎÆÛƼ |
ŸÀÔ |
¼³¸í |
Row |
DataRow ¨Þ |
¿ÀÌ ÀÖ´Â Çà °´Ã¼ |
Column |
DataColumn ¨Þ |
ÆíÁýµÇ´Â ¿ |
ProposedValue |
object |
Á¦¾ÈµÈ °ª. Áï ¿¿¡ ´ëÀÔµÈ °ªÀÌ´Ù. |
Çڵ鷯´Â ÀÌ Á¤º¸¸¦ º¸°í Á¦¾ÈµÈ °ª, Áï »ç¿ëÀÚ°¡ ÀÔ·ÂÇÏ°íÀÚ ÇÏ´Â
°ªÀ» ¹Þ¾ÆµéÀ̰ųª ¾Æ´Ï¸é ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ¿© À߸øµÈ °ªÀÓÀ» ¾Ë¸°´Ù. ¿¡·¯¸¦ Ãâ·ÂÇÒ ¶§ ¸Þ½ÃÁö ¹Ú½º¸¦
¿ ¼ö ÀÖÁö¸¸ »ç¼ÒÇÑ ½Ç¼ö¿¡ ´ëÇØ ´ëÈ»óÀÚ°¡ ºÒ¾¦ ºÒ¾¦ ¿¸®´Â °ÍÀº ¹Ù¶÷Á÷ÇÏÁö ¾ÊÀ¸¹Ç·Î
SetColumnError ¸Þ¼µå·Î ¿¡·¯°¡ ÀÖÀ½À» Ç¥½Ã¸¸ ÇØ µÎ´Â °ÍÀÌ ÁÁ´Ù.
ÇàÀÌ º¯°æµÉ ¶§ÀÎ RowChanging À̺¥Æ®¿¡¼´Â Çà Àüü¿¡ ´ëÇÑ
À¯È¿¼º Á¡°Ë Äڵ带 ÀÛ¼ºÇÑ´Ù. ´ÜÀÏ°ªÀ» Á¡°ËÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¿°£ÀÇ °ü°è¸¦ Á¡°ËÇÒ ¶§ ÀûÇÕÇÏ´Ù. Å×½ºÆ®¸¦ À§ÇØ ¿©ÀÚ °í°´Àº 40¼¼¸¦ ³Ñ¾î¼´Â ¾ÈµÈ´Ù´Â Á¶°ÇÀ» ¼³Á¤ÇØ
º¸ÀÚ. ÀÌ Á¶°ÇÀ» Á¡°ËÇÏ·Á¸é ¼ºº°°ú ³ªÀ̸¦ µ¿½Ã¿¡ ÂüÁ¶ÇØ¾ß ÇϹǷΠ¿ÀÌ ¹Ù²ð ¶§ Á¡°ËÇÏ´Â °ÍÀº ºÎÀû´çÇϸç
Çà Àüü¸¦ Á¡°ËÇØ¾ß ÇÑ´Ù. RowChanging À̺¥Æ®ÀÇ Àμö·Î´Â ´ÙÀ½ µÎ °¡Áö°¡ Àü´ÞµÈ´Ù.
ÇÁ·ÎÆÛƼ |
ŸÀÔ |
¼³¸í |
Row |
DataRow ¨Þ |
º¯°æµÇ°í ÀÖ´Â Çà |
Action |
DataRowAction ¨Þ |
¾î¶² ÆíÁý ÀÛ¾÷ÀÌ ¼öÇàµÇ°í ÀÖ´ÂÁö¸¦ ¾Ë¸°´Ù. Add, Change, Delete µîÀÇ
¿°Å°ª Áß ÇϳªÀÌ´Ù. |
ÆíÁýµÇ°í ÀÖ´Â Çà¿¡ ´ëÇÑ ÂüÁ¶¸¸ Àý´ÞµÉ »Ó ¿¿¡ ´ëÇÑ ÂüÁ¶´Â Àü´ÞµÇÁö ¾ÊÀ¸¹Ç·Î Çà ÀüüÀÇ ¸ðµç °ªÀ» Á¡°ËÇØ ºÁ¾ß
ÇÑ´Ù. RowÀÇ Age¿Í
Male Çʵ带 ÀÐ¾î ¿©ÀÚÀÌ°í ³ªÀÌ°¡ 40ÀÌ»óÀÌ¸é ³ªÀÌ¿¿¡ ¿¡·¯ Ç¥½Ã¸¦ Çß´Ù. ½ÇÇàÇØ º¸¸é Á¶°Ç¿¡ ¸ÂÁö ¾Ê´Â ·¹Äڵ忡 »¡°£»ö ´À³¦Ç¥°¡ ³ªÅ¸³´Ù.
¹®Á¦°¡ ÀÖ´Â ¿¿¡ ¿¡·¯ ¸Þ½ÃÁö¸¦ µî·ÏÇØ ³õÀ» ¼ö Àִµ¥ ÀÌ ¸Þ½ÃÁö´Â Â÷ÈÄ
GetColumnsInError ¸Þ¼µå·Î Á¶»çÇÑ´Ù. ¿¡·¯ ¹ß»ý½Ã¸¶´Ù ¸Å¹ø ±ÍÂú°Ô ÇÏÁö ¸»°í
»óŶõ µî¿¡ °ø¼ÕÇÏ°Ô ½Ç¼ö¸¦ ÁöÀûÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ¿øÇÑ´Ù¸é ¿¡·¯ ¸Þ½ÃÁö¸¦ µî·ÏÇÏ´Â ´ë½Å Áï½Ã ¸Þ½ÃÁö
¹Ú½º·Î ¿À·ù¸¦ ¾Ë¸®°í ¾Æ¿¹ ÀÔ·ÂÀ» °ÅºÎÇÏ´Â °Íµµ ¹°·Ð °¡´ÉÇÏ´Ù. ´Ü,
ÀÌ·¸°Ô Çϸé ÀÔ·ÂÁß¿¡ ¸Þ½ÃÁö ¹Ú½º°¡ ¿·Á ºÒÆíÇØÁú ¼öµµ ÀÖÀ¸¹Ç·Î ¾ÆÁÖ Ä¡¸íÀûÀÎ °ª¿¡ ´ëÇؼ¸¸ ¸Þ½ÃÁö ¹Ú½º¸¦ ¿¾î¾ß ÇÑ´Ù.
void tblPeople_ColumnChanging(object sender,
DataColumnChangeEventArgs e) {
if
(e.Column.ColumnName == "Age") {
if
((int)e.ProposedValue < 0 || (int)e.ProposedValue > 100) {
MessageBox.Show("³ªÀÌ´Â 0 ~ 100 »çÀÌ¿©¾ß ÇÕ´Ï´Ù.");
e.ProposedValue
= e.Row["Age", DataRowVersion.Original];
}
}
}
¿¿¡ ´ëÀ﵃ °ªÀÎ ProposedValue¸¦ ¿ø·¡°ªÀ¸·Î ¹Ù²ã ¹ö¸®¸é
ÀÔ·ÂÀÌ °ÅºÎµÈ´Ù. ÀÌ Ã³¸®´Â ¿ÀÌ º¯°æµÉ ¶§¸¸ ÇÒ ¼ö ÀÖÀ¸¸ç ÇàÀÌ º¯°æµÉ ¶§´Â ÇÒ ¼ö ¾ø´Ù. ¿Ö³ÄÇϸé ÇàÀÌ ¹Ù²ð ¶§´Â ÆíÁýµÇ´Â ¿¿¡ ´ëÇÑ Á¤º¸°¡ Àü´ÞµÇÁö ¾Ê¾Æ ³ªÀÌ°¡ ÆíÁýµÇ¾î Á¶°ÇÀÌ À§¹ÝµÈ °ÍÀÎÁö ¼ºº°ÀÌ
¹Ù²î¾î Á¶°ÇÀÌ À§¹ÝµÈ °ÍÀÎÁö ¾Ë ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ÀÌ Ã³¸®¸¦ Á¤ ÇÏ°í ½Í´Ù¸é °ü·ÃµÈ ¿ º¯°æ À̺¥Æ®¿¡¼
ÀÏÀÏÀÌ Ã³¸®ÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù. Age º¯°æ½Ã ¿©¼ºÀº 40¼¼
¹Ì¸¸ÀÎÁö º¸°í ¼ºº° º¯°æ½Ã ¿©¼ºÀÎ °æ¿ì¸¸ ³ªÀ̸¦ Á¡°ËÇÏ¸é µÈ´Ù.
¾ÈÀüÇÑ µ¥ÀÌÅÍ °ü¸®¸¦ À§ÇØ À¯È¿¼º Á¡°ËÀº ²À ÇÊ¿äÇÏ´Ù. ƯÈ÷ »ç¿ëÀڷκÎÅÍ
°ªÀ» ÀԷ¹ÞÀ» ¶§´Â ¹«½¼ ÁþÀ» ÇÒ Áö ¿¹ÃøÇÒ ¼ö ¾ø´Ù. »ç¿ëÀÚ´Â ¼ºñ½º ´ë»óÀÌÁö¸¸ µµ¹«Áö ½Å·ÚÇÒ ¼ö
¾ø´Â Á¸ÀçÀÌ´Ù. µ¥ÀÌÅÍ°¡ ÀÔ·ÂµÉ ¶§¸¶´Ù ¸Å¹ø À¯È¿¼º Á¡°ËÀ» ÇÏ¸é ºÒ°¡ÇÇÇÏ°Ô ¼º´ÉÀÇ ÀúÇÏ°¡ ÀÖÀ» ¼ö¹Û¿¡
¾ø´Ù. Äڵ忡¼ °ªÀ» ¼öÁ¤ÇѴٰųª ½Å·ÚÇÒ ¼ö ÀÖ´Â °ªÀ̶ó´Â °ÍÀÌ È®½ÇÇÏ´Ù¸é DataRowÀÇ BeginEdit¸¦ È£ÃâÇÏ¿© À¯È¿¼º Á¡°ËÀ» Àá½Ã Áß´ÜÇÒ
¼ö ÀÖ´Ù. ÀÌ ¸Þ¼µå¸¦ È£ÃâÇϸé EndEdit³ª CancelEdit¸¦ È£ÃâÇÒ ¶§±îÁö À¯È¿¼º Á¡°Ë À̺¥Æ®°¡ ÁßÁöµÈ´Ù.
¹ÙÀεù(Binding)À̶õ µ¥ÀÌÅÍ ¼Ò½º¸¦ ÆûÀÇ ÄÁÆ®·Ñ°ú ¿¬°áÇÏ¿© Æû¿¡ DBÀÇ ³»¿ëÀ» Ãâ·ÂÇÏ´Â ±â¹ýÀÌ´Ù. Áö±Ý±îÁö Å×À̺íÀ» DataGridView ÄÁÆ®·Ñ¿¡ ¹ÙÀεùÇÏ¿© ³»¿ëÀ» È®ÀÎÇÏ°í ÆíÁýµµ ÇØ º¸¾Ò´Âµ¥ ±×¸®µå´Â Å×À̺í Àüü ³»¿ëÀ» Åë°·Î
º¸¿©ÁÖ°í ÆíÁý ±â´Éµµ ¸·°Çؼ »ç¿ëÇϱ⠱²ÀåÈ÷ Æí¸®ÇÏ´Ù. ±×¸®µå»Ó¸¸ ¾Æ´Ï¶ó »ç¿ëÀÚ¿¡°Ô Á¤º¸¸¦ º¸¿©ÁÖ°í
ÀԷ¹޴ ´ëºÎºÐÀÇ ÄÁÆ®·ÑÀ» DB¿Í ¹ÙÀεùÇÒ ¼ö ÀÖ´Ù.
¹ÙÀεùÀº DBÀÇ ³»¿ëÀ» Àоî ÄÁÆ®·Ñ¿¡ Ãâ·ÂÇÏ°í ¶Ç ÆíÁýµÈ °ªÀ» DB·Î ´Ù½Ã Àü¼ÛÇÏ´Â º¹ÀâÇÑ µ¿ÀÛÀÌÁö¸¸ °´Ã¼ÁöÇâÀÇ ÇýÅÃÀ¸·Î ÀÎÇØ ¸î °¡Áö ÇÁ·ÎÆÛƼ¸¸ Á¶Á¤ÇÏ¸é ½±°Ô ±¸ÇöÇÒ ¼ö
ÀÖ´Ù. ÇÏÁö¸¸ °ü¿©Çϴ Ŭ·¡½º°¡ ¿ö³« ¸¹°í ÇÁ·ÎÆÛƼ³¢¸® º¹ÀâÇÏ°Ô ¾ôÇô ÀÖ¾î ±¸Á¶¸¦ ÇÑ´«¿¡ ÆľÇÇϱâ´Â
³ÇØÇÏ´Ù. ´ÙÀ½ÀåºÎÅÍ ¸¶¹ý»ç¸¦ »ç¿ëÇÏ¸é ¹ÙÀεùÀº ÀÚµ¿À¸·Î ±¸¼ºµÇ¹Ç·Î ³Ê¹« »ó¼¼ÇÏ°Ô ¾Ë·Á°í ÇÒ ÇÊ¿ä´Â
¾ø°í ´ëÃæÀÇ µ¿ÀÛ ¹æ½Ä¸¸ ±¸°æÇØ º¸ÀÚ.
´ÙÀ½ ¿¹Á¦´Â SQL ¼¹öÀÇ
tblPeopleÀ» ÀоîµéÀδÙ. Áö±Ý±îÁö ¹è¿î¹Ù´ë·Î ¿¬°á °´Ã¼¸¦ »ý¼ºÇÏ°í ¿¬°á ¹®ÀÚ¿À»
´ëÀÔÇÑ ÈÄ ¾î´ðÅÍ·Î tblPeopleÀÇ ¸ðµç ·¹Äڵ带 Àоî
DbADOTest µ¥ÀÌÅÍ ÁýÇÕÀÇ tblPeople Å×ÀÌºí¿¡ ä¿ü´Ù.
BindingTest |
using
System; ~ using System.Windows.Forms; using
System.Data.SqlClient; namespace
BindingTest { public
partial class Form1 : Form { private
SqlConnection Con; private
SqlDataAdapter Adpt; private
DataSet DbADOTest; public
Form1() { InitializeComponent(); } private
void Form1_Load(object sender, EventArgs e) { Con
= new SqlConnection(); Con.ConnectionString
= "Server=(local);database=ADOTest;" + "Integrated
Security=true"; Adpt
= new SqlDataAdapter("SELECT * FROM tblPeople", Con); DbADOTest
= new DataSet("ADOTest"); Adpt.Fill(DbADOTest,
"tblPeople"); } } } |
¼¹ö¿Í ¿¬°áÇÏ°í Å×À̺íÀ» Á¦´ë·Î Àб⵵ ÇßÁö¸¸ ÀÌ´ë·Î ½ÇÇàÇϸé Æû¿¡ ¾Æ¹«°Íµµ ³ªÅ¸³ªÁö ¾Ê´Â´Ù. µ¥ÀÌÅÍ´Â °¡Áö°í ÀÖÁö¸¸ »ç¿ëÀÚ¿¡°Ô º¸¿©ÁÙ ÄÁÆ®·Ñµµ ¾ø°í µ¥ÀÌÅ͸¦ Àоî Ãâ·ÂÇÏ´Â Äڵ嵵 ¾ø±â ¶§¹®ÀÌ´Ù. Æû¿¡ ÅؽºÆ® ¹Ú½º¸¦ Çϳª ¹èÄ¡ÇÏ°í ´ÙÀ½ ÄÚµå·Î ù ¹ø° ·¹ÄÚµåÀÇ Name Çʵ带
Ãâ·ÂÇØ º¸ÀÚ.
textBox1.Text =
(string)DbADOTest.Tables["tblPeople"].Rows[0]["Name"];
½ÇÇàÇϸé ÅؽºÆ® ¹Ú½º¿¡ "°í¼Ò¿µ"ÀÌ Ãâ·ÂµÈ´Ù. ±×·¯³ª ÀÌ ÄÚµå´Â DB¿¡¼ ÅؽºÆ® ¹Ú½º·Î µ¥ÀÌÅ͸¦ ÀϹæÇâÀ¸·Î Àü¼ÛÇÑ °Í¿¡ ºÒ°úÇØ ÆíÁýÇѴٰųª ´ÙÀ½ ·¹ÄÚµå·Î À̵¿ÇÏÁö´Â ¸øÇÑ´Ù. ÅؽºÆ® ¹Ú½º´Â "°í¼Ò¿µ"ÀÌ
¾îµð¼ ¿Ô´ÂÁöµµ ¸ð¸£°í Áִ´ë·Î ¹Þ¾Æ Ç¥½Ã¸¸ ÇÒ »ÓÀÌ´Ù.
µ¥ÀÌÅÍ ¼Ò½ºÀÇ Æ¯Á¤ Çʵå¿Í ÄÁÆ®·ÑÀ» ¿¬°áÇÏ·Á¸é ¹ÙÀεùÇØ¾ß ÇÑ´Ù. ¹ÙÀεùÀ̶õ
ÄÁÆ®·Ñ°ú µ¥ÀÌÅÍ ¼Ò½º¸¦ ¦Áþ´Â °ÍÀÌ´Ù. ¦À» Áö¿ö ³õÀ¸¸é º°´Ù¸¥ Ãâ·Â¹®À» ÀÛ¼ºÇÏÁö ¾Ê¾Æµµ DBÀÇ ³»¿ëÀÌ ÄÁÆ®·Ñ¿¡ ÀÚµ¿À¸·Î ³ªÅ¸³ª¸ç ÄÁÆ®·ÑÀ» ÆíÁýÇϸé DBÀÇ
³»¿ëµµ °°ÀÌ ¹Ù²ï´Ù. »Ó¸¸ ¾Æ´Ï¶ó DBÀÇ ÇöÀç À§Ä¡°¡ ¹Ù²î¸é
ÄÁÆ®·ÑÀÇ ³»¿ëµµ Áï½Ã º¯°æµÈ´Ù.
¸ðµç ÄÁÆ®·ÑÀº DataBindings ÇÁ·ÎÆÛƼ¸¦ °¡Áö¸ç Binding °´Ã¼ÀÇ Ä÷º¼ÇÀÎ ControlBindingsCollection ŸÀÔÀ¸·Î
Á¤ÀǵǾî ÀÖ´Ù. Binding °´Ã¼´Â ÄÁÆ®·ÑÀÇ ÇÁ·ÎÆÛƼ¿Í µ¥ÀÌÅÍ ¼Ò½ºÀÇ Æ¯Á¤ Çʵ忡 ´ëÇÑ ¿¬°á Á¤º¸¸¦
°¡Áø´Ù. ÄÁÆ®·Ñ°ú DB´Â Åë»ó 1:1·Î ¿¬°áµÇÁö¸¸ 1:´Ù·Î ¿¬°áµÉ ¼öµµ ÀÖ¾î Ä÷º¼ÇÀ¸·Î °ü¸®ÇÑ´Ù. ÄÁÆ®·ÑÀÇ ÇÁ·ÎÆÛƼ¸¶´Ù ´Ù¸¥ Çʵå¿Í ¿¬°áÇÒ ¼ö Àִµ¥ ¿¹¸¦ µé¾î ÅؽºÆ® ¹Ú½ºÀÇ
Text ÇÁ·ÎÆÛƼ´Â Name Çʵå¿Í ¿¬°áÇÏ°í
BackColor ÇÁ·ÎÆÛƼ´Â Color Çʵå¿Í ¿¬°áÇÒ ¼ö ÀÖ´Ù.
ÄÁÆ®·Ñ¿¡ ¹ÙÀεùÀ» Ãß°¡ÇÏ·Á¸é ¹ÙÀεù Ä÷º¼ÇÀÇ Add ¸Þ¼µå¸¦ È£ÃâÇϰųª
¾Æ´Ï¸é Binding °´Ã¼ÀÇ »ý¼ºÀÚ¸¦ È£ÃâÇÑ ÈÄ Add ¸Þ¼µå·Î Binding °´Ã¼¸¦ Àü´ÞÇÑ´Ù. ´ÙÀ½Àº Ä÷º¼Ç Ŭ·¡½ºÀÇ Add ¸Þ¼µåÀÌ´Ù.
public Binding Add (string propertyName,Object dataSource,string
dataMember)
¹ÙÀεùÇÒ ÄÁÆ®·ÑÀÇ ÇÁ·ÎÆÛƼ, µ¥ÀÌÅÍ ¼Ò½º, µ¥ÀÌÅÍ ¸â¹ö¸¦ Â÷·Ê´ë·Î ÁöÁ¤ÇÑ´Ù. Form1_LoadÀÇ ³¡¿¡ ´ÙÀ½
Äڵ带 Ãß°¡ÇØ º¸ÀÚ.
textBox1.DataBindings.Add("Text",
DbADOTest, "tblPeople.Name");
ÅؽºÆ® ¹Ú½ºÀÇ Text ÇÁ·ÎÆÛƼ¸¦
DbADOTest µ¥ÀÌÅÍ ÁýÇÕÀÇ tblPeople Å×À̺íÀÇ Name Çʵå¿Í ¿¬°áÇ϶ó´Â ¶æÀÌ´Ù. ÀÌ Äڵ忡 ÀÇÇØ ÅؽºÆ® ¹Ú½º¿¡
ÇʵåÀÇ °ªÀÎ "°í¼Ò¿µ"ÀÌ Ãâ·ÂµÈ´Ù. »Ó¸¸ ¾Æ´Ï¶ó ÅؽºÆ® ¹Ú½º¸¦ ÆíÁýÇϸé DBÀÇ ÇÊµå °ªµµ º¯°æµÈ´Ù.
ÄÁÆ®·ÑÀ» Çʵå¿Í ¹ÙÀεùÇϸé ÄÁÆ®·Ñ»Ó¸¸ ¾Æ´Ï¶ó ±× ºÎ¸ðÀÎ Æû¿¡µµ ¹ÙÀεù Á¤º¸°¡ ±â·ÏµÈ´Ù. ÆûÀÇ BindingContext ÇÁ·ÎÆÛƼ´Â ¹ÙÀεùÀ» °ü¸®ÇÏ´Â BindingManagerBaseÀÇ Ä÷º¼ÇÀÌ´Ù. Æû¿¡´Â ¿©·¯ °³ÀÇ
ÄÁÆ®·ÑÀÌ ¹èÄ¡µÇ°í ÄÁÆ®·Ñ¸¶´Ù ´Ù¸¥ Çʵ忡 ¹ÙÀεùÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¹ÙÀεù Á¤º¸µµ Ä÷º¼ÇÀÌ´Ù.
BindingContext ¾È¿¡´Â
BindingManagerBase·ÎºÎÅÍ ÆÄ»ýµÇ´Â CurrencyManager³ª PropertyManager°¡ ÀúÀåµÈ´Ù. µ¥ÀÌÅÍ ¼Ò½º°¡ ¿©·¯ °³ÀÇ
°ªÀ» °¡Áö´Â ¸ñ·ÏÀÎ °æ¿ì CurrencyManager°¡ ÇöÀç À§Ä¡¸¦ °ü¸®ÇÏ¸ç ´ÜÀÏ °ªÀÎ °æ¿ì PropertyManager°¡ ¹ÙÀεùÀ» °ü¸®ÇÑ´Ù. CurrencyManagerÀÇ Position ÇÁ·ÎÆÛƼ¸¦ Áõ°¨½ÃÅ°¸é µ¥ÀÌÅÍ ¼Ò½ºÀÇ ·¹ÄÚµå »çÀ̸¦ À̵¿ÇÒ ¼ö ÀÖ´Ù. Æû¿¡ ¹öÆ° µÎ °³¸¦ ¹èÄ¡ÇÑ ÈÄ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇØ º¸ÀÚ.
private void btnNext_Click(object sender,
EventArgs e) {
BindingContext[DbADOTest,
"tblPeople"].Position++;
}
private void btnPrev_Click(object sender,
EventArgs e) {
BindingContext[DbADOTest,
"tblPeople"].Position--;
}
BindingContext ÇÁ·ÎÆÛƼÀÇ Àε¦¼·Î tblPeopleÀÇ ¹ÙÀεùÀ» °ü¸®ÇÏ´Â CurrencyManager°´Ã¼¸¦
ã¾Æ ÀÌ °´Ã¼ÀÇ Position ÇÁ·ÎÆÛƼ¸¦ Áõ°¨½ÃÄ×´Ù. ¹öÆ°À»
´©¸£¸é ÀÌÀü, ÀÌÈÄ ·¹ÄÚµå·Î À̵¿ÇÏ¸é¼ ÅؽºÆ® ¹Ú½º¿¡ Ãâ·ÂµÇ´Â Çʵ嵵 Áï½Ã ¹Ù²ï´Ù.
»Ó¸¸ ¾Æ´Ï¶ó ÅؽºÆ® ¹Ú½º¸¦ ÆíÁýÇÏ¸é µ¥ÀÌÅÍ ÁýÇÕÀÇ Çʵ嵵 ¹Ù²ï´Ù. ±èÅÂÈñ¸¦
ÀüÁöÇöÀ¸·Î ¹Ù²Û ÈÄ ´ÙÀ½À¸·Î °¬´Ù°¡ ÀÌÀüÀ¸·Î µ¹¾Æ¿Í º¸¸é ¹Ù²î¾î ÀÖ´Ù. ¹ÙÀεù¿¡ ÀÇÇØ ÄÁÆ®·Ñ°ú µ¥ÀÌÅÍ
¼Ò½ºÀÇ Çʵ尡 ¾ç¹æÇâÀ¸·Î ¿¬°áµÈ °ÍÀÌ´Ù. ÀÌ·¸°Ô ÆíÁýµÈ °ªÀ» ¾î´ðÅÍÀÇ
Update ¸Þ¼µå·Î Àü¼ÛÇÏ¸é ¿øº»ÀÇ Çʵ嵵 ¹Ù²ï´Ù.
»õ·Î Ãß°¡µÈ BindingSource¿Í BindingNavigator ÄÁÆ®·ÑÀº ¹ÙÀεùÀ» À§ÇÑ °£Á¢ °èÃþÀ» Á¦°øÇÏ¿© ¹ÙÀεù ÀÛ¾÷À» °£´ÜÇÏ°Ô Ã³¸®ÇÏ¸ç ·¹ÄÚµå
»çÀ̸¦ À̵¿Çϰųª ÆíÁýÇÏ´Â »ç¿ëÀÚ UIµµ Á¦°øÇÑ´Ù. ÀÌ ÄÁÆ®·ÑÀº
¸¶¹ý»ç°¡ °ü¸®Çϸç ÁַΠŸÀÔµå µ¥ÀÌÅÍ ÁýÇÕ°ú ÇÔ²² »ç¿ëÇϵµ·Ï ¼³°èµÇ¾î ÀÖ¾î ÄÚµå·Î Å×½ºÆ®Çϱâ´Â ¾î·Æ´Ù. ´ÙÀ½
ÀåºÎÅÍ ¸¶¹ý»ç¿Í ÇÔ²² ÀÌ ÄÁÆ®·ÑÀ» »ç¿ëÇØ º¼ °ÍÀÌ´Ù.
Äڵ忡¼³ª µ¥ÀÌÅͺ£À̽º¿¡¼³ª ÁÁÀº À̸§À» ºÙÀÌ´Â °ÍÀº Áß¿äÇϸ鼵µ ¾î·Á¿î ÀÏÀÌ´Ù. °°Àº ¹üÀ§³»¿¡¼ Áߺ¹µÇÁö ¸»¾Æ¾ß ÇÏ¸ç ±â¾ïÇϱ⠽±°í ÀÔ·ÂÇϱâ ÆíÇÑ Àû´çÇÑ ±æÀÌÀÇ À̸§À» ã±â ½±Áö ¾Ê´Ù. Äڵ忡¼´Â ±×³ª¸¶ Áö¿ªº¯¼ö³ª ³×ÀÓ½ºÆäÀ̽º µî À̸§ÀÇ Áߺ¹À» ÇÇÇÒ ¼ö ÀÖ´Â ÀåÄ¡°¡ ÀÖÁö¸¸ µ¥ÀÌÅͺ£À̽ºÀÇ Å×À̺íÀ̳ª
Ä÷³¿¡´Â ÀÌ·± ÀåÄ¡°¡ ¾ø´Ù. ±×·¸´Ù º¸´Ï °³¹ßÁß¿¡ ±ÞÇÏ°Ô À̸§À» ºÙ¿© Àǹ̸¦ ÆľÇÇϱâ Èûµé°Å³ª ³Ê¹«
±æ°Ô ÀÛ¼ºÇØ ¾²±â ºÒÆíÇÑ °æ¿ì°¡ Á¾Á¾ ÀÖ´Ù.
¼³»ç ¼ºÀDz¯ À̸§À» Àß ºÙ¿© ³õ¾Ò´Ù ÇÏ´õ¶óµµ ¾ð¾îÀÇ Â÷ÀÌ·Î ÀÎÇØ °ï¶õÀ» °Þ´Â °æ¿ìµµ ÀÖ´Ù. ¿¹¸¦ µé¾î ÀϺ»ÀÇ ÀÚȸ»ç¿¡¼ Å×À̺íÀ» µðÀÚÀÎÇߴµ¥ °³³ä¾ø´Â ÀϺ» °³¹ßÀÚ°¡ Ä÷³¸íÀ» ÀϺ»¾î·Î ÀÛ¼ºÇß´Ù°í ÇØ º¸ÀÚ. ´å³ÝÀº À¯´ÏÄÚµå ±â¹ÝÀÌ¾î¼ ÀϺ»¾îµµ ¹®Á¦¾øÀÌ ÀÔÃâ·ÂÇÒ ¼ö ÀÖÁö¸¸ ¹®Á¦´Â ¿ì¸®°¡ ¾²´Â Å°º¸µå°¡ ÀϺ»¾î ÀԷ¿¡
ÀûÇÕÇÏÁö ¾Ê´Ù´Â Á¡ÀÌ´Ù. ÀÌ´Â Çѱ۵µ ¸¶Âù°¡ÁöÀε¥ Çʵå¸íÀ» Çѱ۷ΠºÙ¿© ³õÀ¸¸é ¿Ü±¹ °³¹ßÀÚ´Â °ÅÀÇ È¯ÀåÇØ
¹ö¸± °ÍÀÌ´Ù. ±×·¡¼ ÄÚµùÇÒ ¶§´Â °¡±ÞÀû ªÀº ¿µ¹® ¸íĪÀ» ±ÇÀåÇÑ´Ù.
¸íĪÀÌ ¹®Á¦°¡ µÇ´Â °æ¿ì´Â ÈçÇÏ´Ù. Áö³ªÄ¡°Ô Ãà¾àÇüÀ¸·Î ÀÛ¼ºÇϰųª
´ë¼Ò¹®ÀÚ ±¸¼ºÀÌ º¹ÀâÇØ ÀÔ·ÂÇϱ⠹ø°Å·Î¿î °æ¿ìµµ ÀÖ°í ÃÖÁ¾ »ç¿ëÀÚ¿¡°Ô ¾ÏÈ£¹®°°Àº ¸íĪµµ ÀÖ´Ù. ¿©·¯
°¡Áö ÀÌÀ¯·Î ¸íĪÀ» ¹Ù²Ù¾î¾ß ÇÏ´Â °æ¿ì°¡ ¿Õ¿Õ Àִµ¥ ¾î´ðÅÍÀÇ ¸ÊÇÎ ±â´ÉÀ» »ç¿ëÇϸé À̸§À» º¯°æÇÒ ¼ö ÀÖ´Ù. Çѱ۸íÀ»
¿µ¹®À¸·Î ¹Ù²Ù¸é °³¹ßÀÚ°¡ ÆíÇØÁö°í ¿µ¹®¸íÀ» Çѱ۷Π¹Ù²Ù¸é ÃÖÁ¾ »ç¿ëÀÚ°¡ º¸±â ½±´Ù.
¾î´ðÅÍÀÇ TableMappings ÇÁ·ÎÆÛƼ´Â µ¥ÀÌÅÍ ¿øº»ÀÇ À̸§°ú
º°ÄªÀÇ Â¦À» °ü¸®ÇÑ´Ù. µðÆúÆ®·Î ÀÌ ÇÁ·ÎÆÛƼ´Â ÅÖ ºñ¾î ÀÖ¾î ¿øº»ÀÇ À̸§À» »ç¿ëÇÏÁö¸¸ º°ÄªÀ» ÁÖ¸é ÀÌÈĺÎÅÍ
ÁöÁ¤µÈ º°ÄªÀ» »ç¿ëÇÑ´Ù. º°µµÀÇ ¿¹Á¦¸¦ ¸¸µé ÇÊ¿ä ¾øÀÌ
DataAdapterTest ¿¹Á¦¿¡ ´ÙÀ½ Äڵ带 Ãß°¡ÇØ º¸ÀÚ. Fill ¸Þ¼µå¸¦ È£ÃâÇϱâ
Àü¿¡ ¸ÊÇÎ Ä÷º¼ÇÀ» »ý¼ºÇÑ´Ù.
using System.Data.Common;
private void btnOpen_Click(object sender,
EventArgs e) {
....
DataTableMapping
Mapper= Adpt.TableMappings.Add("Table", "tblPeople");
Mapper.ColumnMappings.Add("Name",
"À̸§");
Mapper.ColumnMappings.Add("Age",
"³ªÀÌ");
Mapper.ColumnMappings.Add("Male",
"¼ºº°");
Adpt.Fill(tblPeople);
dataGridView1.DataSource
= tblPeople;
}
TableMappings ÇÁ·ÎÆÛƼ´Â DataTableMapping °´Ã¼ÀÇ Ä÷º¼ÇÀε¥ ÀÌ Å¬·¡½º´Â
System.Data.Common ³×ÀÓ½ºÆäÀ̽º¿¡ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î using ¼±¾ðÀ» Çؾß
ÇÑ´Ù. ÇÑ ¾î´ðÅÍ·Î ¿©·¯ °³ÀÇ Å×À̺íÀ» °ü¸®ÇÒ ¼ö ÀÖÀ¸¹Ç·Î Å×ÀÌºí¸¶´Ù Çϳª¾¿ÀÇ DataTableMapping °´Ã¼°¡ ÇÊ¿äÇÏ¸ç ±×·¡¼ TableMappings´Â
Ä÷º¼ÇÀÌ´Ù. ÀÌ Ä÷º¼ÇÀÇ Add ¸Þ¼µå·Î »õ·Î¿î DataTableMapping °´Ã¼¸¦ »ý¼ºÇÑ´Ù.
public DataTableMapping
Add (string sourceTable,string dataSetTable)
DataTableMappingÀÇ ColumnMappings ÇÁ·ÎÆÛƼ´Â DataColumnMapping °´Ã¼ÀÇ
Ä÷º¼ÇÀÌ´Ù. ÇÑ Å×ÀÌºí¿¡ ¿©·¯ °³ÀÇ Ä÷³ÀÌ ÀÖÀ¸¹Ç·Î ÀÌ ¿ª½Ã Ä÷º¼ÇÀÌ´Ù. ÀÌ Ä÷º¼ÇÀÇ Add ¸Þ¼µå·Î »õ·Î¿î DataColumnMapping °´Ã¼¸¦ »ý¼ºÇÑ´Ù.
public DataColumnMapping
Add (string sourceColumn, string dataSetColumn)
Àμö·Î ¿øº»ÀÇ Ä÷³¸í°ú ÀÌÈÄ »ç¿ëÇÒ Ä÷³¸íÀ» Àü´ÞÇÑ´Ù. ¿¹Á¦¿¡¼´Â ¼¼ °³ÀÇ Ä÷³ ¸ÊÇÎÀ» Ãß°¡ÇÏ¿© ¿µ¹®À¸·Î µÈ Ä÷³¸í¿¡ Çѱ۷ΠµÈ º°¸íÀ» ºÙ¿´´Ù. ¸ÊÇÎÀ» ´Ù ¸¸µç ÈÄ Fill·Î ä¿ì¸é ¸ÊÇÎÀ» ÂüÁ¶ÇÏ¿© µ¥ÀÌÅÍ ÁýÇÕÀÇ
Å×À̺í, Ä÷³¸íÀ» ¸¸µç´Ù. tblPeopleÀÇ ¿ À̸§ÀÌ Çѱ۷Πº¯°æµÇ¾î ±×¸®µå »ó´ÜÀÇ Çì´õ¿¡ Ãâ·ÂµÈ´Ù.
Çʵå¸íÀÌ º¹ÀâÇϰųª ºñÁ÷°üÀûÀ̶ó¸é Ä£¼÷ÇÏ°í ½¬¿î À̸§À» Á¦°øÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¾Æ¹«·¡µµ Name, Age º¸´Ù´Â À̸§, ³ªÀÌ°¡ Àбâ ÁÁ´Ù. ´õ °£´ÜÇÏ°Ô ¼¹ö¿¡ Å×À̺íÀ» ¿äûÇÒ ¶§ºÎÅÍ º°ÄªÀ» ÁÖ´Â ¹æ¹ýÀÌ Àִµ¥ SQL¹®À»
ÀÛ¼ºÇÒ ¶§ AS Å°¿öµå·Î º°ÄªÀ» ÁöÁ¤ÇÑ´Ù.
Adpt = new SqlDataAdapter("SELECT NAME AS À̸§, AGE AS ³ªÀÌ, Male AS ¼ºº° FROM tblPeople", Con);
³»ºÎÀûÀÎ À̸§°ú ¿ÜºÎÀûÀÎ À̸§ÀÌ ´Þ¶ó¾ß ÇÏ´Â °æ¿ì°¡ ÈçÇØ SQLµµ
¼¹ö Â÷¿ø¿¡¼ ¿À̳ª Å×À̺íÀÇ À̸§À» º¯°æÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. ¼¹ö¿¡¼ ÀÐÈú ¶§ºÎÅÍ ¾Æ¿¹ º°ÄªÀ¸·Î
ÀÐÇôÁö´Âµ¥ ÀÌ ¹æ¹ýÀÌ ´õ °£´ÜÇÏ´Ù.