[Áöµð³ÝÄÚ¸®¾Æ].NET ¾ÖÇø®ÄÉÀÌ¼Ç Äڵ忡¼ ¿¹¿Ü¸¦ ó¸®ÇÏ´Â °ÍÀº ¸Å¿ì °£´ÜÇϰí try/catch ÄÚµå ºí·ÏÀ» ÀÌ¿ëÇÑ Á÷°üÀûÀÎ ÀýÂ÷ÀÌ´Ù. µ¥ÀÌÅͺ£À̽º ºÎºÐ¿¡¼µµ ¿ª½Ã ¿¹¿Ü¸¦ ¸ð´ÏÅÍ ÇÒ ¼ö Àִµ¥, ÀÌ ±â»ç¿¡¼´Â SQL ¼¹ö¿Í T-SQLÀ» ÀÌ¿ëÇÑ µ¥ÀÌÅͺ£À̽º Äڵ忡¼ ¿¡·¯¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» »ìÆìº»´Ù.
°³¹ßÀÚµéÀº ¿¹¿Ü(exception)¸¦ ó¸®Çϴµ¥ Ä£ÀýÇϰԵµ ¸¹Àº ³ë·ÂÀ» ±â¿ïÀ̱⠶§¹®¿¡ »ç¿ëÀÚµéÀº ¾Ë ¼ö ¾ø´Â ½Ã½ºÅÛ ¿¡·¯ ¸Þ½ÃÁö¸¦ °ÆÁ¤ÇÒ Çʿ䰡 ¾ø´Ù. ÀÌ·± ÀÌÀ¯ ¶§¹®¿¡, ¿¹¿Ü 󸮴 ¸ðµç .NET ¾ÖÇø®ÄÉÀ̼ÇÀÇ Ç¥ÁØ Ç׸ñÀÌ´Ù. try/catch ºí·ÏÀº °³¹ßÀÚ°¡ ¿¹¿Ü¸¦ Àâ¾Æ³»°í ±× ½ÃÁ¡¿¡¼ÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç ½ÇÇàÀ» ÄÁÆ®·ÑÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ¸¹Àº ¿¡·¯µéÀº µ¥ÀÌÅͺ£À̽º ó¸® Áß¿¡ ¹ß»ýÇÏÁö¸¸ ¸¹Àº °³¹ßÀÚµéÀº µ¥ÀÌÅͺ£À̽º ºÎºÐ¿¡¼ »ý±â´Â ¿¡·¯¸¦ ó¸®ÇÏ´Â °ÍÀ» ¾ËÁö ¸øÇÑ´Ù. ÀÌ ±â»ç¿¡¼´Â SQL ¼¹ö¿Í T-SQLÀ» ÀÌ¿ëÇÑ µ¥ÀÌÅͺ£À̽º Äڵ忡¼ ¿¡·¯¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.
T-SQL¿¡¼ ¹ß»ýÇÑ ¿¡·¯ ó¸®Çϱâ
SQL ¼¹ö°¡ Á¦°øÇÏ´Â T-SQL ¾ð¾î´Â ÀúÀå ÇÁ·Î½ÃÀú, ÇÔ¼ö µî¿¡¼ ¹ß»ýÇÒ ¼ö ÀÖ´Â Ä¡¸íÀûÀÌÁö ¾ÊÀº ¿¡·¯¸¦ ½±°Ô ó¸®ÇÒ ¼ö ÀÖ°Ô ÇØÁÖÁö¸¸, ¸ðµç ¿¡·¯°¡ ½±°Ô ó¸®ÇÒ ¼ö ÀÖ°Ô µÇ´Â °ÍÀº ¾Æ´Ï´Ù. »ç½Ç, ¿¡·¯¿¡´Â Ä¡¸íÀûÀÎ ¿¡·¯¿Í Ä¡¸íÀûÀÌÁö ¾ÊÀº ¿¡·¯°¡ Àִµ¥, Ä¡¸íÀûÀÌÁö ¾ÊÀº ¿¡·¯¿Í´Â ´Þ¸® Ä¡¸íÀûÀÎ ¿¡·¯´Â ½ÇÇàÀÌ ÁߴܵȴÙ.
Æ®·£Àè¼Ç
º¯°æ»çÇ×ÀÌ ¸ðµÎ ¿Ï·áµÅ ¸ðµç °ÍÀÌ Á¤»óÀÎ °ÍÀ» È®½ÇÈ÷ Çϱâ À§Çؼ´Â µ¥ÀÌÅͺ£À̽º Äڵ忡 Æ®·£Àè¼ÇÀ» »ç¿ëÇØ¾ß¸¸ ÇÑ´Ù. SQL ¼¹ö ¿Â¶óÀÎ µµ¿ò¸»Àº selects, inserts, updates ȤÀº deletes¿Í °°Àº ¸í·ÉÇàÀÇ ¿¬¼ÓÀ¸·Î ÀÌ·ç¾îÁø ³í¸®Àû ÀÛ¾÷ ´ÜÀ§¶ó°í ¼³¸íÇÑ´Ù. ¸¸¾à Æ®·£Àè¼Çµ¿¾È ¿¡·¯°¡ ¾ø´Ù¸é Æ®·£Àè¼ÇÀÇ ¸ðµç º¯°æ »çÇ×Àº µ¥ÀÌÅͺ£À̽º¿¡ Àû¿ëµÉ °ÍÀ̸ç, ¸¸¾à ¿¡·¯°¡ ¹ß»ýÇϸé, ¾î¶² º¯°æ»çÇ×µµ µ¥ÀÌÅͺ£À̽º¿¡ Àû¿ëµÇÁö ¾Ê´Â´Ù.
Æ®·£Àè¼ÇÀº BEGIN TRANSACTION°ú END TRANSACTION ¸í·É »çÀÌ¿¡ Æ÷ÇԵȴÙ. ROLLBACK TRANSACTION ¸í·ÉÀº ¸ðµç º¯°æ»çÇ×À» Ãë¼ÒÇϵµ·Ï ÇÏ¿©, ¾î¶² º¯°æ»çÇ×µµ ÀÌ·ç¾îÁöÁö ¾Ê°Ô ÇÑ´Ù. COMMIT TRANSACTION ¸í·ÉÀº º¯°æ»çÇ×À» µ¥ÀÌÅͺ£À̽º¿¡ ¹Ý¿µÇÑ´Ù. ÀÌÁ¦, T-SQL¿¡¼ ¿¡·¯¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.
@@Error
@@Error ÇÔ¼ö´Â T-SQLÀ» ¸¸µé ¶§ ¿¡·¯¸¦ ó¸®Çϵµ·Ï ÇØÁØ´Ù. ÀÌ ÇÔ¼ö´Â ½Ã½ºÅÛÀÇ ¿¡·¯ Äڵ带 µ¹·ÁÁØ´Ù. ¸¸¾à ¿¡·¯°¡ ¾øÀ¸¸é 0À» ¸®ÅÏ ÇÑ´Ù. @@Error ÇÔ¼ö´Â °¢ T-SQL ¸í·ÉÀÌ ½ÇÇàµÇ¸é ÃʱâȵDZ⠶§¹®¿¡, ¸í·ÉÀ» È£ÃâÇÑ Á÷ÈÄ ¹Ù·Î ºÒ·¯¾ßÇÑ´Ù.
RAISERROR
RAISERROR ¸í·ÉÀº Ä¿½ºÅÒ ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸¸µé°Å³ª sysmessages Å×ÀÌºí¿¡ ÀÌ¹Ì ÀÖ´Â ¸Þ½ÃÁö¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ÀÌ ±¸¹®ÀÇ ¹®¹ýÀº ¿Â¶óÀÎÀ¸·Î º¼ ¼ö ÀÖÁö¸¸, °¡Àå ±âº»ÀûÀÎ ÇüÅ´ ¿¡·¯ÀÇ ½É°¢µµ, »óÅÂ¿Í ÇÔ²² ¸Þ½ÃÁö³ª ¸Þ½ÃÁö ID¸¦ Æ÷ÇÔÇÑ´Ù. »óÅ´ SQL ¼¹ö¿¡¼ »ç¿ëÇÏÁö ¾Ê±â ¶§¹®¿¡ ÀÓÀÇÀÇ ¼ýÀÚ¸¦ ÀÌ¿ëÇØ ó¸®ÇÑ´Ù. ½É°¢µµ´Â ¿¡·¯ÀÇ ½É°¢¼ºÀ» ³ªÅ¸³»´Âµ¥ 0~18Àº »ç¿ëÀÚ°¡ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç 19~25´Â °ü¸®ÀÚ¸¦ À§ÇØ ¿¹¾àµÅ ÀÖ´Ù.
¿¹Á¦ 1. ÀÌ ¿¹Á¦ ÀúÀå ÇÁ·Î½ÃÀú´Â Northwind µ¥ÀÌÅͺ£À̽ºÀÇ °³º° ·¹Äڵ带 ¾÷µ¥ÀÌÆ®Çϴµ¥ ÀÌ ±â´ÉµéÀ» »ç¿ëÇÑ´Ù. ¿¡·¯°¡ ¾øÀ» °æ¿ì ÀüÈ ¹øÈ£ Ä®·³ÀÇ °ªÀ» ÇÁ·Î½ÃÀú¸¦ ÅëÇØ ¼öÁ¤ÇÑ´Ù. ¸¸¾à ¿¡·¯°¡ ¹ß»ýÇϸé À½¼ö¸¦, ¿¡·¯°¡ ¾øÀ¸¸é ¾ç¼ö¸¦ µ¹·ÁÁÖ´Â ¸®ÅÏ °ªÀ» »ç¿ëÇÑ´Ù.
ÀúÀå ÇÁ·Î½ÃÀúÀÇ ¸®ÅÏ °ª »ç¿ëÇϱâ
.NET Äڵ忡 ÀúÀå ÇÁ·Î½ÃÀúÀÇ ¸®ÅÏ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. SqlCommand °´Ã¼´Â ÀúÀåµÈ ¸®ÅÏ °ª»Ó¸¸ ¾Æ´Ï¶ó ½±°Ô ÇÁ·Î½ÃÀú¿¡ ÆÄ¶ó¹ÌÅ͸¦ ³Ñ±æ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ÆÄ¶ó¹ÌÅÍÀÇ Direction ¼Ó¼ºÀº ÀúÀå ÇÁ·Î½ÃÀú È£ÃâÀ» ÅëÇÑ ¸®ÅÏ °ªÀ» ¾ò´Âµ¥ »ç¿ëµÇ´Âµ¥, ÀÌ ¼Ó¼ºÀº InputOutput°ú OutputÀÌ µÉ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼´Â »óÅ °ªÀ» ¹Þ±â À§ÇØ OutputÀ» »ç¿ëÇÏ¿´´Ù.
´ÙÀ½ ¿¹Á¦´Â Northwind µ¥ÀÌÅͺ£À̽ºÀÇ customers Å×À̺íÀÇ Æ¯Á¤ ·¹Äڵ忡 »õ·Î¿î °ªÀ» ÀúÀåÇÏ´Â °£´ÜÇÑ ASP.NET ÆäÀÌÁöÀÌ´Ù. id °ªÀº ½ÇÁ¦·Î´Â hidden Çʵå·Î ÀúÀåµÈ´Ù. formÀ» ÅëÇØ °ªÀ» ½±°Ô ³Ñ±æ ¼ö ÀÖÁö¸¸, µ¥¸ð¸¦ À§ÇØ ¿¹Á¦¿Í °°ÀÌ Çß´Ù. text Çʵ忡 ÀÔ·ÂµÈ °ªÀº phone Çʵ带 ¾÷µ¥ÀÌÆ® Çϴµ¥ »ç¿ëµÈ´Ù.
ÆÄ¶ó¹ÌÅÍ´Â SqlCommand °´Ã¼¿¡ Ãß°¡ÇÒ ¼ö ÀÖÀ¸¸ç ÀúÀå ÇÁ·Î½ÃÀúÀÇ ÆÄ¶ó¹ÌÅÍ °ª°ú Á¤È®È÷ ÀÏÄ¡ÇØ¾ßÇÑ´Ù. ÀÌ ÀÛ¾÷Àº SqlCommand °´Ã¼ÀÇ ExecuteNonQuery¸¦ ÅëÇØ ½ÇÇàµÈ´Ù. À̰ÍÀÌ ½ÇÇàµÇ¸é, ÆÄ¶ó¹ÌÅ͸¦ ÅëÇØ ¸®ÅÏ °ªÀ» ¹ÞÀ» ¼ö ÀÖ´Ù.
´ÙÀ½ ¿¹Á¦´Â ¸®ÅÏ °ªÀ» °Ë»ç Çϰí(-1Àº ¹®Á¦°¡ ÀÖÀ½À» ¶æÇÑ´Ù) Label ÄÁÆ®·Ñ¿¡ ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÑ´Ù. Ãß°¡·Î µ¥ÀÌÅͺ£À̽º ó¸® Áß¿¡ ¹ß»ýÇÒ ¼ö ÀÖ´Â Ä¡¸íÀûÀÎ ¿¡·¯¸¦ Àâ±â À§ÇØ try/catch ºí·ÏÀÌ »ç¿ëµÇ¾ú´Ù.
¿¹Á¦ 2.
¿¹Á¦ 3Àº °°Àº ÀÛ¾÷À» ÇÏ´Â VB.NET ÄÚµåÀÌ´Ù
ÇÊ¿äÇÑ ¸ðµç °Í Á¦°ø
.NET ¾ÖÇø®ÄÉÀÌ¼Ç Äڵ忡¼ ¿¹¿Ü¸¦ ó¸®ÇÏ´Â °ÍÀº °£´ÜÇϰí try/catch ÄÚµå ºí·ÏÀ» ÀÌ¿ëÇÑ Á÷°üÀûÀÎ ÀýÂ÷ÀÌ´Ù. ÇÏÁö¸¸, µ¥ÀÌÅͺ£À̽º ºÎºÐ¿¡¼µµ ¿ª½Ã ¿¹¿Ü¸¦ ¸ð´ÏÅÍ ÇÒ ¼ö Àִµ¥, SQL ¼¹öÀÇ T-SQLÀº Äڵ带 ½ÇÇàÇÏ¸é¼ È®ÀÎÇÒ ¼ö ÀÖ´Â ¸ðµç °ÍµéÀ» Á¦°øÇÑ´Ù.@