[Áöµð³ÝÄÚ¸®¾Æ]¿¢¼¼½º¿Í DAO¸¦ ÅëÇØ ·ÎÄÃÀÇ DB¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀ»
Áö³ ±Û¿¡¼ ´Ù·ð½À´Ï´Ù. ÇÏÁö¸¸ °ÅÀÇ ´ëºÎºÐ DBMS¿Í µ¥ÀÌÅͺ£À̽º Á¢±Ù Ŭ¶óÀÌ¾ðÆ®´Â ¹°¸®ÀûÀ¸·Î ¶³¾îÁ® ÀÖ´Â °æ¿ì°¡ ´ëºÎºÐÀÔ´Ï´Ù. ¶³¾îÁø DBMS¿¡ ¾î¶»°Ô Á¢±ÙÇÒ ¼ö ÀÖÀ»±î¿ä? ±×°ÍÀ» À§ÇØ ODBC¶ó´Â ´Ù¸®(ºê¸´Áö, bridge)°¡ Á¸ÀçÇÕ´Ï´Ù. ODBC´Â µ¥ÀÌÅͺ£À̽º ÇÁ·Î±×·¡¹Ö ¿ª»ç¿¡¼ ¾ÆÁÖ Áß¿äÇÑ ¿ªÇÒÀ» ÇÕ´Ï´Ù.
DAO¸¦ ¸Àº¸±â À§ÇØ CDaoRecordset Ŭ·¡½º¸¦ ÀÌ¿ëÇÑ °£´ÜÇÑ ÀϱâÀåÀ» ±¸ÇöÇØ º¸¾Ò½À´Ï´Ù. »ç½Ç DAO¿¡´Â ÀϱâÀå ¿¹Á¦¿¡¼ ´Ù·çÁö ¸øÇÑ ´Ù¾çÇÑ ±â´ÉµéÀÌ µé¾î ÀÖÁö¸¸ Áö¸éÀÇ ÇѰè¿Í Çö½ÇÀûÀÎ Ãø¸éÀ» ¹Ù¶óº»´Ù¸é ODBC³ª OLE-DB¿¡¼ ¸ø´ÙÇÑ ±â´ÉµéÀ» »ìÆìº¸´Â °ÍÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù. À̹ø È£¿¡¼´Â CRecordsetÀ̶ó´Â Ŭ·¡½º°¡ ¸ÍȰ¾àÀ» ÇÒ °ÍÀÔ´Ï´Ù. ¸ÕÀú ODBC¿¡ ´ëÇØ ¾Ë¾Æº¸±â·Î ÇÏÁÒ. ODBC´Â 90³â´ë ÁßÈĹݿ¡ ³ªÅ¸³ ²Ï³ª ¿À·¡µÈ ±â¼úÀÌÁö¸¸ µ¥ÀÌÅͺ£À̽º ÇÁ·Î±×·¡¹Ö¿¡ ÀÖ¾î¼ È¹±âÀûÀÎ °³³äÀ̾ú½À´Ï´Ù.
DB¿¡ ´ëÇÑ ÂªÀº ¿ª»ç
¾ÏÈ£ ÇØµ¶, ÅºÂøÁ¡ °è»ê, ¼¼±Ý °è»ê µî ÀÌ·¯ÇÑ °ÍµéÀº ÄÄÇ»ÅͰ¡ ¹ß¸íµÇ±â À§ÇÑ ÀÌÀ¯¿´½À´Ï´Ù. ±×¸®°í ÄÄÇ»ÅÍ´Â µÎ °¡Áö ³î¶ó¿î ´É·ÂÀÌ ÀÖÁö¿ä. Çϳª´Â ´Ü¼ø ¹Ýº¹ ÀÛ¾÷À» ¾öû³ª°Ô ºü¸£°Ô ¼öÇàÇÑ´Ù´Â Á¡ÀÌ¸ç ´Ù¸¥ ÇÑ °¡Áö´Â Àü±â°¡ ²÷±âÁö ¾ÊÀº ÇÑ Àؾî¹ö¸®Áö ¾Ê°í °è¼Ó ±â¾ïÇÑ´Ù´Â Á¡ÀÔ´Ï´Ù(¿ª½Ã ÄÄÇ»ÅÍÀÇ º»ÁúÀº ÇÔ¼ö¿Í º¯¼ö·Î ³ª´²Áö³×¿ä). ÀÌ·¸°Ô Àؾî¹ö¸®Áö ¾Ê°í °è¼Ó ±â¾ïÇÒ ¼ö ÀÖ´Ù´Â »ç½ÇÀº ¿ÜºÎ ±â¾ïÀåÄ¡ÀÇ ¹ßÀü°ú ÇÔ²² ¡®´ë¿ë·® ±â¾ï ±â°è¡¯·Î Àçź»ýÇÕ´Ï´Ù. ¹Ù·Î µ¥ÀÌÅͺ£À̽ºÀÇ Åº»ýÀÌÁÒ.
ÇÏÁö¸¸ ºÒ°ú ¸î ½Ê ³â Àü¸¸ ÇØµµ ÄÄÇ»ÅÍ(PC°¡ ¾Æ´Õ´Ï´Ù)´Â ¾Æ¹«³ª ¸¸Áú ¼ö ÀÖ´Â ¹°°ÇÀÌ ¾Æ´Ï¾ú½À´Ï´Ù. 1960³â´ë ¸»¿¡ À̸£·¯ óÀ½À¸·Î ¡®µ¥ÀÌÅͺ£À̽º¡¯¶õ ¿ë¾î°¡ ¡®ÇÑ Á¶Á÷ÀÇ ÀÀ¿ë ½Ã½ºÅÛµéÀÌ °ø¿ë(shared)Çϱâ À§ÇØ ÅëÇÕ(integrated), ÀúÀå(stored)ÇÑ ¿î¿µ(operational) µ¥ÀÌÅÍÀÇ ÁýÇÕ¡¯À̶õ °³³äÀ¸·Î Á¤Àǵǰí, °ð ÀÌ¾î µ¥ÀÌŸº£À̽º¸¦ °ü¸®Çϱâ À§ÇÑ ½Ã½ºÅÛÀÎ DBMS°¡ ³ªÅ¸³ª°Ô µË´Ï´Ù.
»ó¿ë °ü°èÇü DBMS, ¿À¶óŬÀÇ Åº»ý
1970³â´ë¿¡ À̸£·¯ ÄÄÇ»ÅÍ´Â Á» ´õ ´ëÁßȵǾú½À´Ï´Ù. DB ¿ª»ç¿¡¼ 70³â´ë°¡ Áß¿äÇÑ ÀÌÀ¯´Â 1978³â¿¡ ù ¹øÂ° °ü°èÇü µ¥ÀÌÅͺ£À̽º Á¦Ç°ÀÎ ¿À¶óŬ 1ÀÌ ÃâÇöÇ߱⠶§¹®ÀÔ´Ï´Ù. ±× ÀÌÀü¿¡´Â 1960³â´ë¿¡ °³¹ßµÈ IBM°ú ÀÎÅÚÀÇ °èÃþÇü µ¥ÀÌÅͺ£À̽º°¡ ÁÖ·ù¿´½À´Ï´Ù. ¡®¿À¶óŬ(Oracle)¡¯Àº °í´ëÀÇ ½ÅÀÇ ½ÅŹÀ» ¹Þ´Â ½Å°ü¸¦ ÀǹÌÇϴµ¥ Á¤¸» ½ÅÀÇ °è½Ã¸¦ ¹ÞÀº °Íó·³ ´ë´ÜÈ÷ ³ôÀº Àα⸦ ²ø¾ú½À´Ï´Ù. ¿©±â¼ Áß¿äÇÑ Á¡Àº ¿À¶óŬÀº ÃÖÃÊÀÇ »ó¿ë °ü°èÇü DBMS¶õ Á¡ÀÔ´Ï´Ù.
ÇѸ¶µð·Î Çö´ëÀû ÀǹÌÀÇ DBMS(DataBase Management System)À» º¸Åë »ç¶÷µéÀÌ ¸¸Á®º¼ ±âȸ´Â ¿À¶óŬÀÌ Ã³À½À̾ú½À´Ï´Ù. 1970¢¦80³â´ë¿¡ »ç¼³ DBMS·Î ±â¾÷ Àü»ê¸ÁÀ» °®Ã߱Ⱑ ¾î·Á¿ü½À´Ï´Ù. ¹Ù·Î ÀÌÁ¡¿¡¼ ¿À´Ã³¯±îÁöµµ ¿À¶óŬÀÌ ³ôÀº ÀÎÁöµµ¸¦ °¡Áö´Â ÀÌÀ¯ÀÔ´Ï´Ù. Ä£±¸µéÀÇ ÀüȹøÈ£Á¶Â÷ ´ÙÀ̾³ª ¼öø¿¡ ¸î ¸í Àû±â ½ÃÀÛÇÏ¸é µµÀúÈ÷ ´Ù¸¥ ¼öøÀ¸·Î ¿Å°Ü ÀûÀ» ¼ö ¾ø½À´Ï´Ù. ¿Å±â±â ±ÍÂú°í ¿Å±â´Ù°¡ »ç°í·Î µ¥ÀÌÅ͸¦ À¯½ÇÇÒ ¼öµµ ÀÖÀ¸´Ï±î¿ä. °íÀÛ Ä£±¸µéÀÇ ÀüȹøÈ£¸¦ ´Ù¸¥ ¼öø¿¡ ¿Å±â±âµµ Èûµçµ¥ ±â¾÷ÀÇ ¸î ½Ê³â µÈ Á¤º¸µéÀ» ¾î¶»°Ô ´Ù¸¥ °÷À¸·Î ¸¶À̱׷¹À̼Ç(migration)ÇÒ ¼ö ÀÖÀ»±î¿ä.
¹Ù·Î ÀÌÁ¡¿¡¼ ÇϳªÀÇ º¥´õ°¡ °ø±ÞÇÏ´Â DBMSÀÇ ¹«¼¿òÀ» ´À³¥ ¼ö ÀÖ½À´Ï´Ù. ÃÊâ±âÀÇ Æ¯Á¤ DBMS·Î °áÁ¤ÇÑ´Ù¸é ÃßÈÄ ´Ù¸¥ DBMS·ÎÀÇ ¸¶À̱׷¹À̼ÇÀº »ç½Ç»ó ºÒ°¡´É¿¡ °¡±î¿ï Á¤µµÀÔ´Ï´Ù. ±×¸®°í ÃÊâ±â ºñÁî´Ï½º ·ÎÁ÷¿¡ ¸ÂÃç³õÀº DB ¼³°è¸¦ »õ·ÎÀÌ Æ©´×ÇѴٵ簡 º¯°æÇÑ´Ù´Â °Íµµ ³Ê¹«³ª Èûµì´Ï´Ù. ¹æ±Ý ¡®ºÒ°¡´É¿¡ °¡±õ´Ù¡¯, ¡®³Ê¹«³ª Èûµé´Ù¡¯°í À̾߱âÇßÁÒ? ±×·± ÀÛ¾÷µéÀ» À§ÇØ ¼ö¸¹Àº ±â¼ú°ú ÅøµéÀÌ ¹ßÀüµÇ¾î ÀÖÀ¸¸ç DBA¸¦ ²Þ²Ù´Â °³¹ßÀÚ¶ó¸é ´«¿©°Ü º¼¸¸ÇÑ ºÐ¾ßÀÔ´Ï´Ù.
DBMSÀÇ °³ÀÎÈ dBase ¥²+, Fox Pro
¿À¶óŬ·Î ÀÎÇØ »ç¿ëÀÚ´Â Å͹̳ÎÀ» ÀÌ¿ëÇØ ¿À¶óŬÀÌ ¼³Ä¡µÈ À¯´Ð½º È£½ºÆ®¸¦ ÀÌ¿ëÇß½À´Ï´Ù(70³â´ë¶ó¸é ¾ÆÁ÷ PC°¡ ³ª¿ÀÁö ¾Ê¾Ò´ø ½Ã±âÀÔ´Ï´Ù). ±×·¯³ª Â÷Ãû È£½ºÆ®/Å͹̳Π¹æ½Ä¿¡¼ °³ÀÎ »ç¿ëÀÚ¸¦ À§ÇÑ PC ȯ°æÀ¸·Î º¯Çذ©´Ï´Ù. PCÀÇ ÃâÇö ¿ª½Ã DB ¿ª»ç¿¡¼ Áß¿äÇÑ Àǹ̸¦ °¡Áý´Ï´Ù. ¾ÖÇÃÀ̳ª MSX¿Í °°Àº 8ºñÆ® PC(¡®Personal Computer¡¯ÀÇ ¾àÀÚÀÌÁö¸¸ IBMÀÇ »óǰ¸íÀ̱⵵ ÇÕ´Ï´Ù)¿¡µµ °³ÀÎ »ç¿ëÀÚ¸¦ À§ÇÑ DBMS°¡ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ¸Þ¸ð¸®¿Í CPUÀÇ ÇѰè·Î º£ÀÌÁ÷À¸·Î ¸¸µç ¡®ÁÖ¼Ò·Ï¡¯¿¡ ºÒ°úÇß½À´Ï´Ù.
±×·¯³ª IBM-PC/XT´Â ¹«·Á 640KB³ª µÇ´Â ±¤´ëÇÑ Áָ޸𸮸¦ °®°í ÀÖ¾úÀ¸¸ç Ãʰ·Â 8088 CPU´Â ¹«·Á 4.77 MHz(±â°¡ Ç츣Âê°¡ ¾Æ´Õ´Ï´Ù)³ª µÇ´Â ³î¶ó¿î ¼Ó·ÂÀ» °®°í ÀÖ¾ú½À´Ï´Ù. Á¤¸»·Î XT, ±×¸®°í ÇöÀç PCÀÇ Àü½ÅÀº °³Àοë DBMS¿Í ½ºÇÁ·¹Æ® ½ÃÆ®¸¸À» À§ÇØ ³ª¿Â ¾÷¹« Àü¿ë±âÀÔ´Ï´Ù. ¿ÀÁ×ÇÏ¸é ±×·¡ÇÈ ¸ðµå¶õ °ÍÀÌ »ç½ÇÀº ºÒ°¡´ÉÇßÀ» Á¤µµ¿´À¸´Ï±î¿ä.
ÇÏÁö¸¸ XT´Â °³ÀÎ ¾÷¹«¸¦ È®½ÇÇÏ°Ô ¸Ã°ÜµÑ ¼ö ÀÖ´Â ²ÞÀÇ °³Àοë ÄÄÇ»ÅÍ¿´°í, DBMSµµ °³Àοë ÄÄÇ»ÅÍ¿¡ °É¸Â´Â DBMS·Î »õ·Ó°Ô ³ªÅ¸³³´Ï´Ù. ÀÌ ½Ã´ë¿¡ °¡Àå »ç¶û¹Þ¾Ò´ø DBMS´Â ¹Ù·Î dBase ½Ã¸®Áî¿Í Fox ProÀÔ´Ï´Ù. Áö±ÝÀÇ °üÁ¡À¸·Î º»´Ù¸é ¿ø½ÃÀûÀÎ ½Ã½ºÅÛÀÌÁö¸¸ ´ëÇü À¯´Ð½º È£½ºÆ®¿¡¼¸¸ °¡´ÉÇß´ø DBMS¸¦ °³ÀÎÀÌ °¡Áú ¼ö ÀÖ°Ô µÈ °ÍÀÔ´Ï´Ù.
±×·¯³ª À̶§¿¡´Â Ä¡¸íÀûÀÎ ¹®Á¦°¡ Àִµ¥ DBMS¿Í ÇÁ·Î±×·¥ÀÌ ºÐ¸®µÇÁö ¾Ê¾Ò´Ù´Â »ç½ÇÀÔ´Ï´Ù. Áï dBase³ª Fox Pro°°Àº DBMS´Â DBÀÌ¸é¼ µ¿½Ã¿¡ ÀÚü ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ °¡Áö°í ÀÖ¾ú½À´Ï´Ù. ÇØ´ç DBMS·Î ¸¸µç DB¸¦ ÀÌ¿ëÇϱâ À§Çؼ´Â ¹Ýµå½Ã DBMS º»Ã¼±îÁö ÀÖ¾î¾ß¸¸ Çß½À´Ï´Ù. ÇÏÁö¸¸ ±×·¯ÇÑ ¾àÁ¡ ´öºÐ¿¡ ÃßÈÄ¿¡ ³ª¿Â Ŭ¸®ÆÛ(Clipper)¶ó´Â ÇÁ·Î±×·¥ÀÌ Àα⸦ ¾ò¾ú½À´Ï´Ù. dBase³ª Fox Pro·Î ¸¸µç DB¸¦ ÀÌ¿ëÇØ EXE ÆÄÀÏ, Áï µ¶¸³Çü ÇÁ·Î±×·¥À¸·Î ÄÄÆÄÀÏÇØÁÖ´Â ¿ªÇÒÀ» Çß½À´Ï´Ù. ±×·¯³ª Ŭ¸®ÆÛ ¿ª½Ã ÇöÀç¿Í °°Àº DBMS¿Í ¾ÖÇø®ÄÉÀ̼ǰ£ÀÇ ¼¹ö/Ŭ¶óÀÌ¾ðÆ® °³³äÀº ¾Æ´Õ´Ï´Ù. ±×·¸´Ù ÇÏ´õ¶óµµ ÀÌ ½ÃÀýÀ» À̲ø¾ú´ø ÇÁ·Î±×·¥µéÀº ÇöÀç¿Í °°Àº ȯ°æÀ» À§ÇÑ ±â¹ÝÀ» ´ÙÁ®ÁÖ¾ú½À´Ï´Ù. À©µµ¿ì ½Ã½ºÅÛ Æú´õ¿¡ ÀÖ´Â moricon.dllÀ̶õ ¸®¼Ò½º DLLÀ» »ìÆìº¸¸é ¾ÆÁ÷µµ ±× ¶§ÀÇ ÇÁ·Î±×·¥µéÀ» À§ÇÑ ¾ÆÀÌÄܵéÀÌ 21¼¼±â¿¡µµ °í½º¶õÈ÷ Á¸ÀçÇϰí ÀÖÀ½À» ¾Ë ¼ö ÀÖ½À´Ï´Ù.
90³â´ë ºñÁî´Ï½ºÀÇ Áß½É, DBMS
DOS¿¡¼ À©µµ¿ì·ÎÀÇ ¹ßÀü, ±×¸®°í TCP/IP¸¦ Áß½ÉÀ¸·Î ÇÑ C/SÀÇ ¹ßÀü, ´õ ¸·°ÇØÁø Çϵå¿þ¾î¿Í ´«ºÎ½Ã°Ô ¼ºÀåÇÑ DBMS´Â ¸ðµç ÇÁ·ÎÁ§Æ®ÀÇ Á߽ɿ¡ DBMS¸¦ µÎ°Ô µÇ¾ú½À´Ï´Ù. ¿À¶óŬ°ú MSÀÇ SQL ¼¹ö´Â ³î¶øµµ·Ï ¹ßÀüÇØ Á¾·¡ÀÇ ÇÁ·Î±×·¥ÀÌ ¸Ã´ø ÀڷᱸÁ¶±îÁöµµ DBMS°¡ ¸Ã°Ô µÇ¾ú½À´Ï´Ù. ÀÌÁ¦ºÎÅÍ ¿©±â¼ Áß½ÉÀÌ µÇ´Â µ¥ÀÌÅͺ£À̽º Á¢¼Ó °³³äÀÌ »ý°Ü³³´Ï´Ù.
¸¸¾à A¶ó´Â DBMS¸¦ ÀÌ¿ëÇÏ¿© ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé¾ú´Ù°í °¡Á¤ÇսôÙ. A¶ó´Â DBMS¿¡ Á¢¼ÓÇϱâ À§Çؼ´Â ´ç¿¬È÷ A¸¦ ¸¸µç º¥´õ¿¡¼ Á¦°øÇÏ´Â ¹æ¹ýÀ» ÁؼöÇØ¾ß ÇÕ´Ï´Ù. ±×·±µ¥ ¾î¶² ÀÌÀ¯·Î ÇÁ·Î±×·¥ÀÇ ´ÙÀ½ ¹öÀü¿¡¼ B¶ó´Â DBMS¸¦ ÀÌ¿ëÇÏ°Ô µÇ¾ú½À´Ï´Ù. ºÐ¸í DBMS¸¸ ¹Ù²Ù´Â °ÍÀÌÁö¸¸ ¾ÖÇø®ÄÉÀ̼ǵµ »ó´ç ºÎºÐ ¶â¾î°íÃÄ¾ß ÇÕ´Ï´Ù. A¿¡ Á¢¼ÓÇϱâ À§ÇÑ ·çƾµéÀ» ¸ðÁ¶¸® B¿¡ Á¢¼ÓÇϱâ À§ÇÑ ·çƾÀ¸·Î ¹Ù²Ù¾î¾ß ÇÏÁÒ. ±×·± ºÒÇÕ¸®ÇÑ ¸éÀ» À§ÇØ MS´Â UDA(Universal Data Access)¶ó´Â ¹æ¹ýÀ» °³¹ßÇß½À´Ï´Ù.
UDA´Â DBMS Á¾·ù¿¡ µ¶¸³ÀûÀ¸·Î ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé ¼ö ÀÖ°Ô ÇÑ ¹æ¹ýÀ̸ç ADO(ActiveX Database Object), OLE-DB, ODBC(Open Database Connectivity) µîÀÌ ´ëÇ¥ÀûÀÎ ¹æ¹ýÀÔ´Ï´Ù. UDA ¸ðµ¨À» ÀÌ¿ëÇÏ¸é °³¹ßÀÚ´Â ÇØ´ç DBMS¸¦ Á÷Á¢ Á¶ÀÛÇÏ´Â °ÍÀÌ ¾Æ´Ñ UDA °èÃþ¿¡¼ Á¦°øÇØÁÖ´Â ¸Þ½îµå·Î ƯÁ¤ DBMS¿¡ °ü°è¾øÀÌ ÀÛ¾÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¾ó¸¶³ª ¸ÚÁø °³³äÀԴϱî? UDA ´öºÐ¿¡ DBMS¸¦ ¹Ù²Ù´õ¶óµµ ¾ÖÇø®ÄÉÀ̼ÇÀº Äڵ带 ¼öÁ¤ÇÒ ÀÏÀÌ »ç¶óÁø °ÍÀÔ´Ï´Ù. ¿ì¸° UDA Áß¿¡¼ VC++¿¡¼ Á¦°øÇØÁÖ´Â ODBC¿Í OLE-DB¸¦ ÀÌ¿ëÇØº¼±î ÇÕ´Ï´Ù.
¶ÇÇÑ ±â¾ïÇÒ °ÍÀº UDA´Â ¾îµð±îÁö³ª 2-Ƽ¾î ¹æ½ÄÀÔ´Ï´Ù. Áï ODBC³ª OLE-DB°¡ ÇÑ °èÃþÀÌ ¾Æ´Ñ ¾ÖÇø®ÄÉÀ̼ǰú DBMS »çÀÌÀÇ ´Ù¸®(Bridge) ¿ªÇÒ¸¸ ÇÏ´Â °ÍÀÔ´Ï´Ù. MTS(Microsoft Transaction Server, ±¸¼º ¿ä¼Ò ¼ºñ½º)¸¦ ÀÌ¿ëÇϸé 3-Ƽ¾î ¹æ½ÄÀ¸·Î ¾ÖÇø®ÄÉÀ̼ǰú DBMS »çÀÌ¿¡ ¹Ìµé¿þ¾î¸¦ µÑ ¼ö ÀÖ½À´Ï´Ù(À̰ÍÀÌ ¹Ù·Î DNA 2000ÀÔ´Ï´Ù). ÀÌ´Â ¼º´É°ú ¾ÈÁ¤¼ºÀ» À§ÇÑ ¹æ¹ýÀ¸·Î MS °è¿·Î ³ª°¡±â À§ÇÑ °³¹ßÀÚ¶ó¸é MTS¸¦ ÀÌ¿ëÇÑ ÇÁ·ÎÁ§Æ®¸¦ ÇØº¸´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¾Æ½±°Ôµµ ÀÌ ºÎºÐÀº MFC¸¦ ÀÌ¿ëÇÑ ÀÌ °ÁÂÀÇ ¼öÁØÀ» ³Ñ´Â ºÎºÐÀ̹ǷΠ¾ÕÀ¸·Î °øºÎÇØ¾ß ÇÒ ºÎºÐÀ¸·Î ³²°ÜµÓ´Ï´Ù. °¡²û ODBC³ª JDBC(ÀÚ¹Ù)¸¦ MTS¿Í °°Àº ÇϳªÀÇ °èÃþÀ¸·Î Âø°¢ÇÏ´Â µ¶ÀÚµµ Àִµ¥ ODBC, JDBC´Â ¿¬°á ºê¸®ÁöÀÏ »ÓÀ̸ç Àý´ë ÇϳªÀÇ °èÃþÀº ¾Æ´Õ´Ï´Ù.
 |
| <±×¸² 1> ODBCÀÇ ¿ªÇÒ |
¸ðµÎ ½¬°í ÀÖÀ» ÀÏ¿äÀÏ ¿ÀÈÄ, °³¹ß½Ç¿¡ È¥ÀÚ ÄÑÁø PC°¡ ÀÖ¾úÀ¸´Ï ¹Ù·Î ·¹¾Æ±ºÀÇ ÀÚ¸®¿´½À´Ï´Ù. À¯³ªÀÇ Äڵ忡¼ ½½Â½ ÈÉÃÄ(?) Àû¾î µÐ SQL ¼¹öÀÇ IP¿Í ·Î±×ÀÎ °èÁ¤À» ¼Õ¿¡ ³ÖÀº ·¹¾Æ±ºÀº Áö³ ´Þ ¸¸µé¾ú´ø ÀϱâÀå ÇÁ·Î±×·¥ÀÇ DBMS¸¦ SQL ¼¹ö·Î ¿Å±â°í ÀÖ¾ú½À´Ï´Ù. ODBC ºê¸´Áö »ç¿ë¹ýÀ» °Ô½ÃÆÇ¿¡¼ ¹è¿î ·¹¾Æ±ºÀÌ IP¿Í °èÁ¤À» ¾È ÀÌ»ó °ÅÄ¥ °ÍÀÌ ¾ø½À´Ï´Ù. Âü°í·Î ÀÌ·± ÇàÀ§´Â Àý´ë µû¶óÇÏ¸é ¾ÈµË´Ï´Ù.
MS SQL ¼¹ö·ÎÀÇ ¸¶À̱׷¹À̼Ç
¿ø·¡ DBMS¿¡ °üÇÑ ÀÏÀº ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ°¡ ¾Æ´Ñ DBA³ª DBMS¸¦ ¸ÂÀº ÆÀ¿¡¼ °Çµå·Á¾ß ÇÒ ºÎºÐÀ̰ÚÁö¸¸ °³ÀÎ ÇÁ·ÎÁ§Æ®À̹ǷΠÇÔ²² µû¶ó°¡ º¾½Ã´Ù. À̹ø ½Ã°£ºÎÅÍ´Â ¿¢¼¼½º MDB°¡ ¾Æ´Ñ MS SQL ¼¹ö 2000À» ÀÌ¿ëÇϰڽÀ´Ï´Ù. SQL ¼¹ö´Â ¹«Ã´ °·ÂÇÑ DBMS·Î À©µµ¿ì ¼¹ö¸¦ »ç¿ëÇÏ´Â ¼ºñ½º¶ó¸é ½ÊÁßÆÈ±¸ SQL ¼¹ö¸¦ ÀÌ¿ëÇÕ´Ï´Ù. SQL ¼¹ö¸¸À¸·Îµµ ³Ê¹« °øºÎÇÒ °ÍÀÌ ¸¹Áö¸¸ MFC °³¹ßÀÚ·Î ¾Ë¾ÆµÑ¸¸ÇÑ °Í¸¸ »ìÆìº¸°Ú½À´Ï´Ù. Áö³ ½Ã°£°ú ¸¶Âù°¡Áö·Î µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇϱâ À§ÇØ Å×À̺íÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ÀÌ¹Ì MS SQL ¼¹ö¿¡ Àͼ÷ÇÑ µ¶ÀÚ¶ó¸é Áö³ ½Ã°£ ¸¸µé¾ú´ø Å×À̺íÀ» ¶È°°ÀÌ ¸¸µé¾îµµ µÉ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ °£´ÜÇÑ ¸¶À̱׷¹À̼ÇÀ» Á÷Á¢Çغ¸´Â °Íµµ ÁÁ°ÚÁÒ? ODBC ¿¬°áÀ» ¸¸µé¾î MDB¿¡¼ MS SQL ¼¹ö·Î ÀÚµ¿ÀûÀ¸·Î ¿Å±â°Ú½À´Ï´Ù.
ODBC ºê¸´Áö ¸¸µé±â
ODBC¸¦ »ç¿ëÇϱâ À§Çؼ´Â ODBC¿¡¼ »õ·Î¿î ¿¬°áÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. À©µµ¿ì 9X °è¿¿¡¼ ÇÁ·Î±×·¡¹ÖÇÏ´Â µ¶ÀÚ¶ó¸é Á¦¾îÆÇÀ», À©µµ¿ì 2000 À̻󿡼 ÇÁ·Î±×·¡¹ÖÀ» ÇÑ´Ù¸é ¡¸Á¦¾îÆÇ | °ü¸®µµ±¸¡¹·Î °¡º¾´Ï´Ù. °ü¸®µµ±¸ ¾È¿¡´Â ¡®µ¥ÀÌÅÍ ¿øº»(ODBC)¡¯À̶ó´Â ¾ÆÀÌÄÜÀÌ Àִµ¥ À̰ÍÀ» ÅëÇØ ODBC ¿¬°áÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù. Âü°í·Î °ü¸® µµ±¸ ¾ÆÀÌÄÜ Áß °¡Àå ¾Õ¿¡ ÀÖ´Â ¡®±¸¼º ¿ä¼Ò ¼ºñ½º¡¯°¡ ¾Õ¼ À̾߱âÇÑ MTSÀÔ´Ï´Ù.
ODBC¸¦ ´õºíŬ¸¯ÇÑ ÈÄ ½Ã½ºÅÛ DSN ÅÇÀ» ´·¯ ¡®Ãß°¡¡¯ ¹öưÀ» ´©¸¨´Ï´Ù. ´Ù¾çÇÑ Á¾·ùÀÇ µ¥ÀÌÅͺ£À̽º µå¶óÀ̹öµéÀÌ Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù. ¸ÕÀú MDB¿¡¼ MS SQL ¼¹ö·Î °¡Á®¿À±â À§ÇØ MDB µå¶óÀ̹ö¸¦ ÀÌ¿ëÇÏ´Â ¿¬°áÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. Áß°£¿¡ ÀÖ´Â ¡®Microsoft Access Driver( *.mdb)¡¯¸¦ ¼±ÅÃÇÕ´Ï´Ù. ¼¼ ¹øÂ° À©µµ¿ì¿¡¼ ¡®µ¥ÀÌÅÍ ¿øº» À̸§¡¯À» ¹¯½À´Ï´Ù. ¿¬°áÀÇ À̸§À» Áþ´Â °ÍÀÌÁÒ. ¾Æ¹« À̸§À̳ª Àû½À´Ï´Ù. ÇÊÀÚ´Â ¡®MDB_Diary¡¯¶ó°í Áö¾ú½À´Ï´Ù. ±× ´ÙÀ½ ¡®¼±Å᯿¡¼ Áö³ ½Ã°£ ¸¸µé¾ú´ø mdb ÆÄÀÏÀ» ¼±ÅÃÇÕ´Ï´Ù. À̰ÍÀ¸·Î ODBC ¿¬°áÀ» ¼º°øÀûÀ¸·Î ¸¸µé¾ú½À´Ï´Ù.
 |
| <ȸé 1> ODBC ¿¬°áÀ» ¸¸µé¾ú½À´Ï´Ù. |
À̰ÍÀÌ ODBC ¿¬°áÀ» ¸¸µå´Â ¹æ¹ýÀÔ´Ï´Ù. ¹«Ã´ °£´ÜÇÏÁö¿ä? ¿©±â¿¡¼ Áß¿äÇÑ °ÍÀº »ç¿ëÇϰíÀÚ ÇÏ´Â DBMS¿¡ ¸Â´Â µå¶óÀ̹ö¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù´Â »ç½ÇÀÔ´Ï´Ù. ¶ÇÇÑ Àڽſ¡°Ô ¾ø´Â µ¥ÀÌÅͺ£À̽º µå¶óÀ̹ö¶ó¸é ÇØ´ç Á¦ÀÛ»çÀÇ È¨ÆäÀÌÁö¿¡ °¡¸é ODBC¿ë µå¶óÀ̹ö¸¦ ´Ù¿î¹Þ¾Æ ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ODBC ¿¬°áÀÌ ¸¸µé¾îÁø ÀÌ»ó, ¾î¶² ÇÁ·Î±×·¥ÀÌ¶óµµ ODBC¸¦ Áö¿øÇÑ´Ù¸é ÀϱâÀåÀ» À§ÇØ ¸¸µç mdb¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù.
MDB¸¦ MS SQL ¼¹ö·Î ¿Å±âÀÚ
MS SQL ¼¹ö¸¦ »ç¿ëÇØº¸Áö ¸øÇÑ °³¹ßÀÚ¸¦ À§Çؼ Â÷±ÙÂ÷±Ù µû¶óÇØ º¸°Ú½À´Ï´Ù. MS SQL ¼¹ö´Â ´Ù¾çÇÑ °ü¸®ÅøÀ» °®°í Àִµ¥ Ãʺ¸ °³¹ßÀÚ¶ó¸é ¡®¿£ÅÍÇÁ¶óÀÌÁî ¸Å´ÏÀú¡¯¸¦ ÀÌ¿ëÇØ¼ ¸¶¿ì½º Ŭ¸¯¸¸À¸·Î »ó´ç ºÎºÐÀ» ¼Õ½±°Ô »ç¿ëÇÒ ÀÖ½À´Ï´Ù(ÇÏÁö¸¸ Äõ¸® ºÐ¼®±â¿¡ »¡¸® Ä£ÇØÁö±â¸¦ ±ÇÀåÇÕ´Ï´Ù). ¿£ÅÍÇÁ¶óÀÌÁî ¸Å´ÏÀú¿¡¼ ¡®SQL ¼¹ö ±×·ì¡¯À¸·Î °¡¸é ±âº»ÀûÀ¸·Î ÀÚ½ÅÀÇ PC À̸§ÀÌ ³ª¿À¸ç 7°³ÀÇ Æú´õ°¡ ³ª¿É´Ï´Ù. ÀÌÁß ¡®µ¥ÀÌÅͺ£À̽º¡¯ Æú´õ´Â ½ÇÁ¦ µ¥ÀÌÅͺ£À̽º°¡ ´ã±ä Æú´õÀÔ´Ï´Ù.
µ¥ÀÌÅͺ£À̽º Æú´õ¿¡¼ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» ´·¯ ¸ðµç ¡¸¸ðµç ÀÛ¾÷ | µ¥ÀÌÅÍ °¡Á®¿À±â¡¹¸¦ ¼±ÅÃÇÕ´Ï´Ù. ¹Ù·Î ¹æ±Ý ¸¸µç MDB_Diary¿¡¼ µ¥ÀÌÅ͸¦ °¡Á®¿À±â À§ÇØ ÀÌ ¸Þ´º¸¦ ¼±ÅÃÇÑ °ÍÀÔ´Ï´Ù. ÀÌÁ¦ ¡®µ¥ÀÌÅÍ °¡Á®¿À±â ¸¶¹ý»ç¡¯°¡ ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù.
ù ¹øÂ° ȸéÀº °¡Á®¿Ã µ¥ÀÌÅ͸¦ ¼±ÅÃÇÏ´Â ºÎºÐÀÔ´Ï´Ù. ÃÖ°ÀÇ DBMS´ä°Ô mdb¸¦ ±×´ë·Î ÀÐÀ» ¼öµµ ÀÖÁö¸¸ ¹æ±Ý ¸¸µç ODBC ºê¸´Áö¸¦ ÀÌ¿ëÇØ °¡Á®¿Àµµ·Ï ÇϰڽÀ´Ï´Ù. ÀÌÁß¿¡¼ ¾î¶² ºÎºÐÀ» °Çµå·Á¾ß ÇÒ±î¿ä? ODBC¶ó°í ÀûÈù Ç׸ñÀ» ¼±ÅÃÇØ¾ß°ÚÁÒ? ¡®µ¥ÀÌÅÍ ¿øº»¡¯¿¡¼ ¡®Other(ODBC Data Source)¡¯¸¦ ¼±ÅÃÇØÁÝ´Ï´Ù. ¸Þ´º ¸ð¾çÀÌ º¯°æµÇ¸ç ¡®»ç¿ëÀÚ/½Ã½ºÅÛ DSN¡¯ÀÌ ³ªÅ¸³³´Ï´Ù. ¹æ±Ý ¸¸µç ¿¬°á À̸§ÀÎ ¡®MDB_Diary¡¯¸¦ ¼±ÅÃÇÕ´Ï´Ù. À̸§°ú ¾ÏÈ£´Â °É¾îµÎÁö ¾Ê¾ÒÀ¸´Ï ¹«½ÃÇÏÁö¿ä. ÇöÀç º¸´Â À©µµ¿ì°¡ <ȸé 2>ÀÔ´Ï´Ù.
ÀÌÁ¦ MS SQL ¼¹ö¿¡ ´ã±æ µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µé¾îÁà¾ß°ÚÁÒ? ´ÙÀ½ ¹öưÀ» ´·¯ ´ë»ó ¼±Åà ȸéÀ¸·Î ³Ñ¾î°©´Ï´Ù. ¼¹ö´Â ¹Ù·Î ÀÚ½ÅÀÇ PC¸¦ ¼±ÅÃÇϸç ÀÚ½ÅÀÇ MS SQL ¼¹öÀÇ ¾ÏÈ£¿Í ºñ¹Ð¹øÈ£¸¦ ¾Ë¸Â°Ô Àû¾îÁÝ´Ï´Ù. ¸¶Áö¸· ¡®µ¥ÀÌÅÍ º£À̽º¡¯ Ç׸ñ¿¡¼´Â ¡®»õ·Î ¸¸µé±â¡¯¸¦ ¼±ÅÃÇØ »õ µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µì´Ï´Ù. »õ·Î ¸¸µé±â ¹öưÀ» ´©¸£¸é »õ·Î¿î µ¥ÀÌÅͺ£À̽ºÀÇ À̸§À» ¹¯´Âµ¥ ÇÊÀÚ´Â Diary¶ó°í Àû¾îÁá½À´Ï´Ù. ÀÌ È¸éÀº <ȸé 3>ÀÌ µÉ °ÍÀÔ´Ï´Ù.
 |
| <ȸé 2> µ¥ÀÌÅ͸¦ °¡Á®¿À±â À§ÇÑ ¿øº» ¼±Åà |
 |
| <ȸé 3> µ¥ÀÌÅ͸¦ ´ãÀ» µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µì´Ï´Ù. |
ÀÌÁ¦ ¸ðµç °úÁ¤ÀÇ ³¡ÀÔ´Ï´Ù. ¡®´ÙÀ½¡¯ ¹öưÀ» °è¼Ó ´·¯ ÀÛ¾÷À» ³¡³À´Ï´Ù. ¡®1°³ÀÇ ACCESS Å×À̺íÀ» Microsoft SQL ¼¹ö(À¸)·Î º¹»çÇß½À´Ï´Ù.¡¯¶ó´Â ¸Þ½ÃÁö°¡ ³ª¿À¸é ¼º°øÀûÀ¸·Î ¸¶À̱׷¹À̼ÇÇÑ °ÍÀÔ´Ï´Ù. »õ·Î ¸¸µé¾îÁø Diary¿¡ Å×À̺í Ç׸ñÀ¸·Î °¡¼ ¡®Diary¡¯ Å×À̺í·Î °¡º¸¸é ¿¢¼¼½º¿¡¼ ÀÛ¾÷ÇÑ ³»¿ëÀÌ ±×´ë·Î ¿Å°ÜÁ® ÀÖÀ½À» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ´«Ä¡ ºü¸¥ µ¶ÀÚºÐÀ̶ó¸é ÀÌÁ¦±îÁö »ìÆìº» MS SQL ¼¹öÀÇ ¸Þ´ºµé¿¡¼ mdb»Ó¸¸ ¾Æ´Ï¶ó ´Ù¾çÇÑ µ¥ÀÌÅÍ¿Í ÅØ½ºÆ®µéÀ» MS SQL ¼¹ö·Î ¿Å±æ ¼ö ÀÖ´Ù´Â °ÍÀ» ´«Ä¡Ã«À» °ÍÀÔ´Ï´Ù.
´õ Áß¿äÇÑ °ÍÀº À̰ÍÀº ´ÜÁö MS SQL ¼¹ö¸¸ÀÇ µ¶¸³µÈ ±â´ÉÀÌ ¾Æ´Ï¶õ Á¡ÀÔ´Ï´Ù. ODBC³ª OLE-DB °°Àº ´Ù¾çÇÑ UDA¸¦ ÀÌ¿ëÇØ ¿ì¸® ½º½º·Îµµ ÀÌ·¯ÇÑ ¸¶À̱׷¹ÀÌ¼Ç ÇÁ·Î±×·¥À» ¼Õ½±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ½ÇÁ¦ Çö¾÷ ȯ°æ¿¡¼ DBMS´Â µ¥ÀÌÅÍ ÀúÀå¼Ò»Ó¸¸ ¾Æ´Ï¶ó µ¥ÀÌÅÍ º¯È¯±â·Îµµ ÀÌ¿ëµÇ¸ç ±×·¯ÇÑ ÅøÀ» Á÷Á¢ ¸¸µç´Ù¸é »ó´çÈ÷ À¯¿ëÇÏ°Ô »ç¿ëµÉ °ÍÀÔ´Ï´Ù. ¿¹ÄÁ´ë À̸ÞÀÏÀ» µ¥ÀÌÅͺ£À̽º·Î ÀÚµ¿À¸·Î ¿Å±ä´Ùµç°¡ ¿¢¼¿ ¹®¼¸¦ µ¥ÀÌÅͺ£À̽º·Î ¿Å±â´Â °Í, ȤÀº HTML ±â¹ÝÀÇ °Ô½ÃÆÇÀ» µ¥ÀÌÅͺ£À̽º·Î ´Ù½Ã ¿Å±â´Â °ÍÀº »ó»ó¸¸À¸·Îµµ À¯¿ëÇÏ´Ù°í ´À²¸ÁöÁö ¾Ê½À´Ï±î?
 |
| <Ç¥ 1> SQL ¼¹öÀÇ Diary Å×À̺í |
À̹ø ½Ã°£¿¡´Â ODBC ¿¬°áÀ» ÀÌ¿ëÇÑ´Ù°í ÇÏ¿´À¸´Ï Áö±Ý ¸¸µç Å×ÀÌºí ¿ª½Ã ODBC ¿¬°áÀ» ¸¸µé¾î¾ß°ÚÁÒ. ¶Ç ´Ù½Ã °ü¸® µµ±¸·Î ã¾Æ°¡ ODBC ¿¬°áÀ» ¸¸µì´Ï´Ù. MS SQLÀº ODBC µå¶óÀ̹ö Áß °¡Àå ¾Æ·¡¿¡ ³õ¿©ÀÖ½À´Ï´Ù. SQL ¼¹ö¸¦ ¼±ÅÃÇÏ°í ´ÙÀ½ ¹öưÀ» ´©¸¨´Ï´Ù. µå¶óÀ̹ö°¡ ´Ù¸¥ ¸¸Å ȸ鵵 ´Ù¸¨´Ï´Ù. <ȸé 5>´Â SQL ¼¹ö·Î ¼³Á¤ÇßÀ» ½ÃÀÇ ODBC ȸéÀÔ´Ï´Ù. ÀÌÁß °ü½ÉÀÖ°Ô ºÁ¾ß ÇÏ´Â °÷Àº ¸¶Áö¸· ¡®¼¹ö¡¯¶ó´Â Ç׸ñÀÔ´Ï´Ù. ºñ·Ï ÇÊÀÚÀÇ È¯°æÀº SQL ¼¹ö¿Í VC++°¡ °°Àº °÷¿¡ À§Ä¡Çϰí ÀÖÁö¸¸ ODBC¸¦ ÀÌ¿ëÇÑ´Ù¸é TCP/IP¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î SQL ¼¹öÀÇ À§Ä¡´Â ¹«°üÇÕ´Ï´Ù. ¿©±â¿¡ ÄÄÇ»ÅÍ À̸§ ȤÀº ÇØ´ç À§Ä¡ÀÇ IP ÁÖ¼Ò¸¦ ÀûÀ¸¸é ¹°¸®ÀûÀ¸·Î ¶³¾îÁø °÷ÀÇ SQL ¼¹ö¶óµµ ã¾Æ°©´Ï´Ù. SQL ¼¹ö¿¡ µî·ÏµÈ ¾ÆÀ̵ð¿Í ºñ¹Ð¹øÈ£, ±×¸®°í ÀÌ¿ëÇÑ µ¥ÀÌÅͺ£À̽º À̸§ÀÎ Diary¸¦ ¼±ÅÃÇÏ°í ¿¬°á µî·ÏÀ» ¸¶Ä¨´Ï´Ù. ¸ðµç °úÁ¤ÀÌ ¼º°øÀûÀ¸·Î ¸¶ÃÆÀ¸¸é µ¥ÀÌÅͺ£À̽º ¿¬°á Å×½ºÆ®µµ ÇØº¸¼¼¿ä. ¸ðµç °ÍÀÌ ¼º°øÀ̸é ÀϱâÀå ÇÁ·Î±×·¥À» ¼º°øÀûÀ¸·Î mdb¿¡¼ SQL ¼¹ö·Î ¸¶À̱׷¹À̼ÇÇÑ °ÍÀÔ´Ï´Ù.
¸¸¾à SQL ¼¹ö¸¦ óÀ½À¸·Î °æÇèÇÑ µ¶ÀÚ¶ó¸é ¸ðµç °ÍÀÌ ³¸¼³ ¼öµµ ÀÖ°Ú½À´Ï´Ù¸¸ µ¥ÀÌÅͺ£À̽º´Â MFC °³¹ßÀÚÀÇ ±âº» ½ºÅ³ Áß ÇϳªÀ̹ǷΠ¹Ýµå½Ã ÀÚ½ÅÀÇ °ÍÀ¸·Î ¸¸µé¾î¾ß¸¸ ÇÕ´Ï´Ù. ÀÌÁ¦±îÁöÀÇ ÂªÀº ¼³¸íÀº ±âº» ´É·ÂÀÏ »ÓÀÌÁö Ưº°ÇÑ °³¹ßÀÚ È¤Àº DBA¸¸ÀÇ ½ºÅ³ÀÌ Àý´ë ¾Æ´Õ´Ï´Ù. SQL ¼¹ö¿¡ ´ëÇØ º¸´Ù ¸¹Àº °ÍÀ» ¾Ë°í ½ÍÀº µ¶ÀÚ¶ó¸é ¡®°ÅºÏ¾ö¸¶ÀÇ SQL ¼¹ö ¿¬±¸½Ç(http://www.mssqllaboratory.pe.kr/)¡¯À» °·ÂÈ÷ ÃßõÇÕ´Ï´Ù. Q&A Çü½ÄÀ¸·Î ¸¸µé¾îÁø À̰÷Àº µ¥ÀÌÅͺ£À̽º °³¹ßÀÚ°¡ °Þ´Â ½Ç¹« Áß½ÉÀÇ ¹®Á¦ »óȲ°ú ±× ÇØ°á¹ýµéÀÌ Àß ³ª¿Í ÀÖ½À´Ï´Ù(´Ù¸¸ ³Ê¹« ±âÃÊÀûÀÎ SQL¹® Áú¹®Àº »ç¾çÇÕ´Ï´Ù).
¡°ODBC¸¦ ÀÌ¿ëÇÏ¿© ¼º°øÀûÀ¸·Î ¾ï¼¼½º¿¡¼ SQL ¼¹ö·Î µ¥ÀÌÅ͸¦ ¿Å°å¾î. ÀÌÁ¨ ¾î¶² ÀÚ¸®¿¡¼³ª ÀϱâÀå ÇÁ·Î±×·¥ÀÌ ÀÛµ¿µÇ°ÚÁö?¡° ÀϱâÀå ÇÁ·Î±×·¥°ú ODBC ºê¸´Áö¸¦ µð½ºÄÏ¿¡ ¿Å°Ü ´ãÀº ·¹¾Æ±ºÀº ÀÚ¸®¸¦ ¿Å°Ü°¡¸ç ÀϱâÀåÀÇ ½ÇÇà °á°ú¸¦ È®ÀÎÇϰí ÀÖ¾ú½À´Ï´Ù.
ÀϱâÀå ÇÁ·Î±×·¥µµ ODBC·Î
CRecordetÀ» ÀÌ¿ëÇÑ µ¥ÀÌÅͺ£À̽º Á¢¼Ó
ÀÌÁ¦ ÀϱâÀå ÇÁ·Î±×·¥µµ °íÃľ߰ÚÁÒ? Áö³ ½Ã°£ »ç¿ëÇß´ø ¿¹Á¦¸¦ ±×´ë·Î ÀÌ¿ëÇÏ¿© DAO¿¡¼ ODBC ±â¹ÝÀ¸·Î ¿Å±â°Ú½À´Ï´Ù. ÇÁ·ÎÁ§Æ®¸¦ ±×´ë·Î º¹»çÇØ ¿Í¼ ODBC¸¦ Ãß°¡ÇÒ °ÍÀÔ´Ï´Ù. ¸ÕÀú CMyDaoDB¸¦ »ç¿ëÇÏ´Â ºÎºÐÀº ÁÖ¼®Ã³¸®ÇØ ÁÖ¼¼¿ä. ±×·¸´Ù ÇÏ´õ¶óµµ °ÅÀÇ ´ëºÎºÐÀÇ ¼Ò½º´Â ±âÁ¸°ú ¶È°°½À´Ï´Ù. ODBC¸¦ »ç¿ëÇϱâ À§Çؼ´Â CDaoRecordset ´ë½Å CRecordset, CDaoDatabase ´ë½Å CDatabase Ŭ·¡½º¸¦ ÀÌ¿ëÇÑ´Ù´Â Á¡¸¸ ´Ù¸¨´Ï´Ù. °¡Àå ¸ÕÀú <ȸé 6>°ú °°ÀÌ Å¬·¡½º À§Àúµå¿¡¼ CRecordset Ŭ·¡½º¿¡¼ »ó¼Ó¹ÞÀº CMyOdbcDB Ŭ·¡½º¸¦ ¸¸µì´Ï´Ù.
CMyOdbcDB Ŭ·¡½ºÀÇ º¯¼öÀÎ m_MyOdbcDB ¸¦ Ãß°¡ÇÑ ÈÄ ±âÁ¸ ¼Ò½º DaoDiaryDlg.cpp¿¡¼ m_MyDaoDB º¯¼ö¸¦ ÀÌ¿ëÇÑ ºÎºÐÀ» ÀüºÎ m_MyOdbcDB·Î °íĨ´Ï´Ù. ÀÌ·² °æ¿ì, Åø ¸Þ´ºÀÇ Edit¿¡ ÀÖ´Â Replace¸¦ ÀÌ¿ëÇÑ´Ù¸é ¾ÆÁÖ ½±°ÚÁÒ? ±×¸®°í stdafx.h¿¡ #include
¸¦ Ãß°¡ÇØÁÝ´Ï´Ù. CDaoRecordset¸¦ ÀÌ¿ëÇÒ °æ¿ì ¸¦, CRecordset¸¦ ÀÌ¿ëÇÒ °æ¿ì¿¡´Â ¸¦ Ãß°¡ÇØÁà¾ß ÇÕ´Ï´Ù. ÄÄÆÄÀÏ ÀÌÀü¿¡ CMyOdbcDB Ŭ·¡½º¸¦ Àá½Ã »ìÆìº¾½Ã´Ù.
 |
| <ȸé 6> ODBC¸¦ ÀÌ¿ëÇÏ´Â CRecordset Ŭ·¡½º¸¦ Ãß°¡ÇÕ´Ï´Ù. |
| <¸®½ºÆ® 1> MyOdbcDB.cpp> ODBC¸¦ ¿¬°áÇÏ´Â ºÎºÐ | | | |
CMyOdbcDB::CMyOdbcDB(CDatabase* pdb)
: CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CMyOdbcDB)
m_ID = 0;
m_Weather = 0;
m_Title = _T("");
m_Contents = _T("");
m_nFields = 5;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
}
CString CMyOdbcDB::GetDefaultConnect()
{
// DB ·Î±×ÀÎÀ» ¹¯Áö ¾Êµµ·Ï ID¿Í PWD¸¦ ¼³Á¤ÇØÁÝ´Ï´Ù.
return _T("ODBC;DSN=Diary;UID=sa;PWD=******");
}
CString CMyOdbcDB::GetDefaultSQL()
{
return _T("[dbo].[Diary]");
}
void CMyOdbcDB::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CMyOdbcDB)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Long(pFX, _T("[ID]"), m_ID);
RFX_Date(pFX, _T("[Date]"), m_Date);
RFX_Long(pFX, _T("[Weather]"), m_Weather);
RFX_Text(pFX, _T("[Title]"), m_Title);
RFX_Text(pFX, _T("[Contents]"), m_Contents);
//}}AFX_FIELD_MAP
} | |
 |
<¸®½ºÆ® 1>Àº CDaoRecordset°ú Å« Â÷À̰¡ ¾øÁö¸¸ GetDefaultConnect() ºÎºÐÀÌ Á¶±Ý ´Þ¶óÁ³½À´Ï´Ù. DAO¿´À» ¶§´Â ·ÎÄÿ¡ ´ã±ä mdb ÆÄÀÏÀÇ °æ·Î¸¸ ¼³Á¤ÇØÁá½À´Ï´Ù. ODBCÀÏ °æ¿ì¿¡´Â µ¥ÀÌÅͺ£À̽ºÀÇ ¹°¸® À§Ä¡´Â °ü°è¾ø½À´Ï´Ù. µû¶ó¼ ODBC¸¦ »ç¿ëÇÒ °ÍÀ̶ó°í ODBC¶ó°í Àû¾îÁáÀ¸¸ç ¿¬°á À̸§(DSN)Àº Diary¶ó°í ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. ¿©±â±îÁö´Â MFC°¡ ¸¸µé¾îÁÖ´Â ºÎºÐÀ̳ª SQL ¼¹ö¿¡ ·Î±×ÀÎÇϱâ À§ÇÑ ID¿Í ºñ¹Ð¹øÈ£´Â ÀûÇôÀÖÁö ¾Ê½À´Ï´Ù(º¸¾ÈÀ» À§ÇØ ±×·± °ÍÀ̰ÚÁÒ?) ¸¸¾à ÀÌ ºÎºÐ¿¡ ID¿Í ºñ¹Ð¹øÈ£°¡ ¾ø´Ù¸é ÇÁ·Î±×·¥ µ¿À۽à Ç×»ó ·Î±×ÀÎÀ» ÇØ¾ß ÇÕ´Ï´Ù. µû¶ó¼ <¸®½ºÆ® 1>°ú °°ÀÌ Ãß°¡ÇØ ÀÚµ¿À¸·Î ·Î±×ÀÎÀÌ µÇµµ·Ï ÇÕ´Ï´Ù. ³ª¸ÓÁö ºÎºÐµéÀº DAO ¶§¿Í ¶È°°½À´Ï´Ù. ÀÚµ¿À¸·Î ¸â¹ö º¯¼ö°¡ ¸¸µé¾îÁ³À¸¸ç DoFieldExchange¿¡¼ µ¥ÀÌÅÍ ±³È¯µµ ÀϾ´Ï´Ù.
¿©±â¼ ¹Ýµå½Ã ¹Ù²ãÁà¾ß ÇÒ ºÎºÐÀÌ ÀÖ½À´Ï´Ù. ¹Ù·Î ³¯Â¥ Çü½Ä ¹®Á¦ÀÔ´Ï´Ù. m_Date´Â CTime ÀÚ·áÇüÀ¸·Î ¹Ù²î¾ú½À´Ï´Ù. DAO¿¡¼´Â COleDateTime¿´½À´Ï´Ù. ¹Ýµå½Ã CTimeÀ» COleDateTimeÀ¸·Î ¹Ù²ãÁÖ±æ ¹Ù¶ø´Ï´Ù. ÀÌ´Â ³¯Â¥¸¦ ÀÔ·ÂÇÒ ¶§ Æí¸®ÇÏ°Ô ÄÚµùÇϱâ À§ÇؼÀÔ´Ï´Ù. MS SQL ¼¹ö¸¦ ÀÌ¿ëÇÒ °æ¿ì datetime ÀÚ·áÇü¿¡¼ °ï¶õÀ» °Þ´Â µ¶ÀÚµéÀÌ ¸¹Àºµ¥ ÁÖ·Î CRecordset¿¡¼ ±âº»ÀûÀ¸·Î Á¦°øÇØ ÁÖ´Â CTime ÀÚ·áÇüÀ» ±×´ë·Î ¾²±â ¶§¹®ÀÔ´Ï´Ù. ¹®ÀÚ¿ ±â¹ÝÀÇ ³¯Â¥/½Ã°£À» CTimeÀ¸·Î º¯°æÇϱâ À§Çؼ´Â ²Ï³ª °í»ýÇØ¾ß Çϴµ¥ óÀ½ºÎÅÍ COleDateTimeÀ» ÀÌ¿ëÇϸé Áö³ ½Ã°£Ã³·³ Æí¸®ÇÏ°Ô SetDate()¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼ m_Date¸¦ MFC°¡ ÁöÁ¤ÇØÁØ CTime ´ë½Å COleDateTimeÀ¸·Î °íÄ¡±æ ¹Ù¶ø´Ï´Ù. À̿ܿ¡µµ ³¯Â¥/½Ã°£ÀÌ ÁÖ¿äÇÏ°Ô »ç¿ëµÇ´Â ÇÁ·Î±×·¥À̶ó¸é COleDateTimeÀ» ¾²±â¸¦ ±ÇÀåÇÕ´Ï´Ù.
CMyOdbcDB´Â CMyDaoDB¿Í »ó´çÈ÷ Èí»çÇÕ´Ï´Ù. ÇÏÁö¸¸ À̰ÍÀ¸·Î DAO¿Í ODBC°¡ ºñ½ÁÇÑ ±â¼úÀ̶ó°í Âø°¢Çؼ´Â ¾ÈµË´Ï´Ù. ÀÌ µÑÀº ÀüÇô ´Ù¸¥ ±â¹ÝÀÇ ±â¼úÀÔ´Ï´Ù. ÇÏÁö¸¸ MFC¿¡¼´Â °³¹ßÀÚ¸¦ À§ÇØ µÑ Áß Çϳª¸¸ ¾Ë´õ¶óµµ ¼Õ½±°Ô ¿Å±æ ¼ö ÀÖµµ·Ï °°Àº ÇÔ¼ö¸¦ Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·³ Áö³ ½Ã°£¿¡ ´Ù·çÁö ¸øÇÑ °Ë»ö°ú ¼öÁ¤À» Ãß°¡Çغ¸°Ú½À´Ï´Ù.
Àϱ⸦ ¼öÁ¤ÇÏÀÚ, UPDATE
µ¥ÀÌÅͺ£À̽º, ¾Æ´Ï SQL ¹®¿¡¼ ¼öÁ¤¿¡ ÇØ´çÇÏ´Â ¹®ÀåÀº UPDATEÀÔ´Ï´Ù. UPDATE´Â ÇÊµå °ª À̿ܿ¡µµ Å×ÀÌºí ±¸Á¶±îÁö ¹Ù²Ü ¼ö ÀÖ´Â °·ÂÇÑ ¹®ÀåÀÔ´Ï´Ù. ÁÖ·Î ÇʵåÀÇ °ªÀ» º¯°æÇϱâ À§ÇÑ UPDATE ¹®ÀåÀº ´ÙÀ½°ú °°½À´Ï´Ù.
UPDATE [Å×À̺í¸í] SET [Çʵå¸í] = '»õ µ¥ÀÌÅÍ' WHERE [Çʵå¸í] = 'CA'
ÀÌ Àǹ̴ Å×ÀÌºí ³»¿¡¼ µ¥ÀÌÅͰ¡ CAÀÎ Çʵ带 »õ µ¥ÀÌÅÍ·Î ¹Ù²Û´Ù´Â ÀǹÌÀÔ´Ï´Ù. ÀÌ·± SQL ¹®À» Á÷Á¢ Àü´ÞÇÒ ¼öµµ ÀÖÁö¸¸ ±×·² °æ¿ì µ¥ÀÌÅͺ£À̽º¿¡ ¹«°üÇÏ°Ô »ç¿ëÇÑ´Ù´Â CRecordsetÀÇ Àǹ̰¡ ¾àÇØÁý´Ï´Ù. µû¶ó¼ CRecordset¿¡¼ Á¦°øÇØÁÖ´Â ¼öÁ¤ ÇÔ¼ö¸¦ »ìÆìº¸ÁÒ. ¸ÕÀú ¡®¼öÁ¤¡¯À̶ó´Â ¹öưÀ» »õ·Ó°Ô ¸¸µé°í ¸®¼Ò½º À̸§Àº IDC_UPDATE¶ó°í ÁÖ¾ú½À´Ï´Ù. ´õºí Ŭ¸¯ÇØ OnUpdate() ÇÔ¼ö¸¦ ¸¸µé¾ú½À´Ï´Ù. ¼öÁ¤ÇÏ´Â °ÍÀº ÀǿܷΠ°£´ÜÇÕ´Ï´Ù. Áö³ ½Ã°£ ¸¸µé¾ú´ø ÀÔ·Â ÇÔ¼ö¿¡¼ ÇÑ ÁÙ¸¸ ¹Ù²ãÁÖ¸é µË´Ï´Ù. ÀÔ·Â ÇÔ¼ö¿´´ø OnInsert()¿¡¼´Â AddNew()·Î »õ·Î¿î Çʵ尡 ÀÔ·ÂµÈ´Ù°í ¼±¾ðÇϰí ÇÊµå °ªÀ» ä¿ì°í Update() ÇÔ¼ö¸¦ È£ÃâÇß½À´Ï´Ù. À̹ø¿¡´Â AddNew ´ë½Å Edit() ÇÔ¼ö¸¦ »ì¦ ¹Ù²ã³õÀ¸¸é µË´Ï´Ù.
| <¸®½ºÆ® 2> DaoDiaryDlg.cpp | | | |
void CDaoDiaryDlg::OnUpdate()
{
// TODO: Add your control notification handler code here
CComboBox *pYear = (CComboBox *)GetDlgItem(IDC_YEAR);
CComboBox *pMonth = (CComboBox *)GetDlgItem(IDC_MONTH);
CComboBox *pDate = (CComboBox *)GetDlgItem(IDC_DATE);
CComboBox *pWeather = (CComboBox *)GetDlgItem(IDC_WEATHER);
CEdit *pTitle = (CEdit *)GetDlgItem(IDC_TITLE);
CEdit *pContents = (CEdit *)GetDlgItem(IDC_CONTENTS);
int nYear = pYear->GetCurSel() + 1990;
int nMonth = pMonth->GetCurSel() + 1;
int nDate = pDate->GetCurSel() + 1;
int nWeather = pWeather->GetCurSel() + 1;
// º¯°æÇÒ Áغñ
m_MyOdbcDB.Edit() // ¾÷µ¥ÀÌÆ®¸¦ À§ÇØ ¹Ù²ï ºÎºÐÀÔ´Ï´Ù.
// COleDateTimeÀ¸·Î ¹Ù²ÙÁö ¾ÊÀ¸¸é ¿¡·¯°¡ ³³´Ï´Ù.
m_MyOdbcDB.m_Date.SetDate( nYear, nMonth, nDate );
m_MyOdbcDB.m_Weather = nWeather;
pTitle->GetWindowText( m_MyOdbcDB.m_Title );
pContents->GetWindowText( m_MyOdbcDB.m_Contents );
// ¼öÁ¤ ¿Ï·á
m_MyOdbcDB.Update();
MessageBox("º¯°æµÇ¾ú½À´Ï´Ù.");}
} | |
 |
¡°µ¥ÀÌÅ͸¦ ¼öÁ¤ÇÒ ¶§´Â UPDATE Å×À̺í SET Çʵå, ±×¸®°í WHERE Àý...¡±
DBMS Ã¥À» ÇÔ²² ¹Ù¶óº¸¸ç ·¹¾Æ±ºÀº DBMS¸¦ Á¶ÀÛÇÕ´Ï´Ù. ±×·¯³ª ¹«½ÉÄÚ ½ÇÇà ¾ÆÀÌÄÜÀ» ´©¸£ÀÚ¸¶ÀÚ Å×À̺í À̸§À» À߸ø Àû¾ú´Ù´Â »ç½ÇÀ» ¾Ë°Ô µÇ¾ú°í ÀÌ À߸ø ÀÔ·ÂÇÑ Å×À̺íÀº ±âÁ¸¿¡ ÀÌ¹Ì Á¸ÀçÇÏ´Â, Áö±Ý ´çÀå ¼ºñ½º ÁßÀΠȸ¿ø Å×ÀÌºí »ç½ÇÀ» ¾Ë°Ô µÇ¾ú½À´Ï´Ù.
¡°¾Ç!!¡±
°³¹ß½Ç °¡µæÈ÷ Àý¸ÁÀûÀÎ ºñ¸íÀ» ¿ÜÄ¡Áö¸¸ ÀÏ¿äÀÏ ¿ÀÈÄ °³¹ß½Ç¿¡¼ µè´Â ÀÌ´Â ¾Æ¹«µµ ¾ø¾ú½À´Ï´Ù. ¾Æ¸¶ ÀÌ·± ÀÏÀº DBA ±ÇÇÑÀ» °®°Ô µÈ Ãʺ¸ °³¹ßÀÚµéÀ̶ó¸é ÇÑ ¹ø¾¿ ¸ô·¡ °Þ°Ô µÇ´Â ÀÏÀÏ °ÍÀÔ´Ï´Ù.
Àϱ⸦ °Ë»öÇÏÀÚ, WHERE ÀýÀÇ »ç¿ë
°Ë»öÀ» À§ÇÑ SQL ¸í·É¾î´Â µû·Î Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. SELECT³ª UPDATE µî ¾î¶² SQL ¹®ÀÌ¶óµµ ¾î¶² Á¶°ÇÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. Á¶°ÇÀ» ÁÖ´Â SQL ¹®Àº WHERE¶ó´Â ¹®ÀåÀÔ´Ï´Ù. µû¶ó¼ ¸ðµç ¹®ÀåÀ» º¸´Â SELECT ¹®À» Çϳª ¸¸µé°í ±× µÚ¿¡ ƯÁ¤ÇÑ Á¶°Ç¸¸ º¸°Ú´Ù°í ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. WHERE Àý¿¡ ƯÁ¤ÇÑ ³¯Â¥, ƯÁ¤ ¹®Àå, ƯÁ¤ ³¯¾¾ µîÀ» ÁöÁ¤ÇÏ¸é µÇ´Â °ÍÀÌÁÒ. ÀÌ·¸µí µ¥ÀÌÅͺ£À̽º¸¦ ÀÌ¿ëÇÏ¸é °Ë»öÀ̶ó´Â ¾î·Á¿î ¾Ë°í¸®ÁòÀ» WHERE ¹®Àå Çϳª·Î ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡¼´Â °£´ÜÈ÷ Á¦¸ñ(Title) Çʵ忡 ƯÁ¤ ´Ü¾î°¡ µé¾î°£ Àϱ⸦ °Ë»öÇϰíÀÚ ÇÕ´Ï´Ù. SQL ¹®Àº ¾î¶»°Ô µÉ±î¿ä?
SELECT * FROM Diary WHERE Title Like '&°Ë»ö´Ü¾î&¡¯
Like´Â Áß¿äÇÑ SQL ¹®ÀåÀÔ´Ï´Ù. Like´Â ¹®ÀÚ ¼Ó¿¡¼ ¡®°Ë»ö ´Ü¾î¡¯¶õ ´Ü¾î°¡ µé¾î°¡´Â ¹®ÀåÀ» ÀüºÎ °¡Á®¿É´Ï´Ù. ¸¸¾à ¸¼Àº ³¯ÀÇ Àϱ⸸ º¸°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µË´Ï´Ù.
SELECT * FROM Diary WHERE Weather = 1
WHERE ÀýÀº AND ¿¬»êÀ¸·Î ´õ¿í ¼¼¹ÐÇÑ °Ë»öÀÌ °¡´ÉÇÕ´Ï´Ù. À¥ °Ô½ÃÆÇ¿¡¼ º¸´Â °Ô½ÃÆÇ °Ë»ö ±â´É ¿ª½Ã WHERE ÀýÀ» ÀÌ¿ëÇØ °¡Á®¿À´Â °ÍÀÔ´Ï´Ù. À̿ܿ¡µµ WHERE ÀýÀ» È¿°úÀûÀ¸·Î ÀÌ¿ëÇØ ´õ¿í ¼¼¹ÐÇÑ °Ë»ö ±â´ÉÀ» ¸¸µé ¼ö ÀÖÁö¸¸ ½Ç½ÀÀº »ý·«Çϱâ·Î ÇÕ´Ï´Ù. SQL ¹® Áß¿¡¼ WHERE ÀýÀÇ »ç¿ë¹ý¸¸ ¼÷ÁöÇÏ°í ±âº»ÀûÀÎ MFC ÄÁÆ®·Ñ¸¸ ÀÀ¿ëÇÑ´Ù¸é °Ë»ö ±â´ÉÀÇ Ãß°¡´Â ½±°Ô ³ª¿À´Ï±î¿ä.
ÀÚ, ±×·³ CRecordset¿¡´Â WHERE ÀýÀ» À§ÇØ ¾î¶² ÇÔ¼ö¸¦ Á¦°øÇØÁÖ°í ÀÖÀ»±î¿ä? ÀÌÁ¦±îÁö¿Í´Â Á¶±Ý ´Ù¸¥ ¹æ¹ýÀ» ÀÌ¿ëÇÕ´Ï´Ù. m_MyOdbcDB ³»ÀÇ ¸â¹öµéÀ» »ìÆìº¸¸é m_strFilter¶ó´Â ¹®ÀÚ¿ º¯¼ö°¡ ÀÖ½À´Ï´Ù. m_strFilter´Â SQL¿¡¼ WHERE Àý ¹Ù·Î µÚ¿¡ ºÙ´Â ¹®ÀåÀ» ÀǹÌÇÕ´Ï´Ù. µû¶ó¼ ½ÇÁ¦ ÄÚµå »ó¿¡¼´Â ´ÙÀ½°ú °°ÀÌ ÀûÀ¸¸é µË´Ï´Ù.
m_MyOdbcDB.m_strFilter = ¡°Title Like ¡®%°Ë»ö´Ü¾î%¡¯¡±;
m_MyOdbcDB.Requery();
Requery()´Â ´Ù½Ã SELECT¸¦ ¼öÇàÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù. À̰ÍÀ» ºü¶ß¸®¸é »õ·Î¿î °á°ú ¼ÂÀÌ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. °Ë»öÀ» À§ÇÑ »õ·Î¿î À©µµ¿ì¸¦ ¶ç¿ì´Â °Íµµ ÁÁ°ÚÁö¸¸ ÄÚµåÀÇ °£°áÇÔÀ» À§ÇØ ±âÁ¸ â À§¿¡ °Ë»ö ¿¡µðÆ® ¹Ú½º¿Í ¹öưÀ» ¸¸µé±â·Î ÇÕ´Ï´Ù. ¸¸¾à °Ë»ö Á¶°Ç¿¡ ÇØ´çÇÏ´Â Çʵ尡 ¾ø´Ù¸é °á°ú ¼ÂÀÌ BOF°Å³ª EOFÀÏ °æ¿ìÀÔ´Ï´Ù.
| <¸®½ºÆ® 3> DaoDiaryDlg.cpp °Ë»ö ±â´ÉÀÇ Ãß°¡ | | | |
void CDaoDiaryDlg::OnWhere()
{
// TODO: Add your control notification handler code here
CString strFilter;
CEdit *pFilter = (CEdit *)GetDlgItem(IDC_FILTER);
pFilter->GetWindowText( strFilter );
CString str1("Title Like '%");
CString str2("%'");
CString str3 = str1 + strFilter + str2;
m_MyOdbcDB.m_strFilter = str3;
m_MyOdbcDB.Requery();
// °Ë»ö Á¶°ÇÀÌ ¾øÀ» ¶§
if ( m_MyOdbcDB.IsBOF() || m_MyOdbcDB.IsEOF() )
{
MessageBox("°Ë»ö Á¶°Ç¿¡ ¸Â´Â Çʵ尡 ¾ø½À´Ï´Ù.");
m_MyOdbcDB.m_strFilter = "";
m_MyOdbcDB.Requery();
m_MyOdbcDB.MoveLast();
FillContents();
return;
}
FillContents();
} | |
 |
±×·± °æ¿ì¿¡´Â <¸®½ºÆ® 3>°ú °°ÀÌ ¿¡·¯ Ãâ·Â°ú ÇÔ²² ´Ù½Ã SELECTÇØ¼ °á°ú ¼ÂÀ» ¿ø»ó º¹±Í½Ã۰í ÀÖ½À´Ï´Ù. <ȸé 7>Àº µ¥ÀÌÅÍ °ü¸®°¡ ¸ðµÎ Æ÷ÇÔµÈ ÀϱâÀåÀÔ´Ï´Ù. À̸¦ ÅëÇØ µ¥ÀÌÅͺ£À̽º¿Í Ä£¼÷ÇØÁö±â¸¦ ¹Ù¶ø´Ï´Ù.
 |
| <ȸé 7> ¼öÁ¤°ú °Ë»ö ±â´ÉÀÌ Æ÷ÇÔµÈ ODBC ÀϱâÀå |
¡°ÈåÈåÈæ, ±×, ±×·¯´Ï±î¿ä, Àú..Àú´Â ¾Æ¹« Àϵµ ¾ÈÇߴµ¥¿ä. ÀúÀý·Î ¹Ù²î¾ú¾î¿ä.¡±
¡°¾Æ¹« Àϵµ ¾ÈÇߴµ¥ ¿Ö ¹Ù²îÁÒ?¡±
·¹¾Æ±ºÀÌ ÇÒ ¼ö ÀÖ´Â ÀÏÀ̶ó°ï DBMS¿¡ ´ëÇØ ¾Ë°í ÀÖ´ø À¯³ª¿¡°Ô Àüȸ¦ °Å´Â °ÍÀ̾ú½À´Ï´Ù. ÀÌ Çΰè Àú Çΰ踦 ´ë´Ù ¼ÖÁ÷È÷ ¹àÈ÷°í ÇØ°á¹ýÀ» ¹¯½À´Ï´Ù.
¡°ÀÏ´Ü ²ÙÁßÀº ³»ÀÏÇÏ°í ÆÀÀå´ÔÀÌ ¾Ë±â Àü¿¡ °íÃľßÁÒ. Áö±Ý ½Ã°£ÀÌ 3½Ã 30ºÐÀ̴ϱî, ¸¶Áö¸· ¹é¾÷À¸·Î µ¹¸®´Â ÀúÀå ÇÁ·Î½ÃÀú°¡ ÀÖ¾î¿ä. ºÒ·¯ÁÙÅ×´Ï ±×°ÍÀ» ÀÛµ¿½ÃŰ¼¼¿ä.¡±
¡°ÀúÀå ÇÁ·Î½ÃÀú´Â ¾î¶»°Ô ÀÛµ¿½ÃŰÁÒ?¡±
¡°Èì... MS °è¿¿¡¼´Â SQL ¹®À» Àü¼ÛÇÒ ¶§ °øÅëÀûÀ¸·Î Execute·Î ½ÃÀ۵Ǵ ÇÔ¼ö¸¦ ¾²´Ï MSDN¿¡¼ ã¾Æº¸¼¼¿ä.¡±
¼û°ÜÁø ExecuteSQL()¸¦ ã¾Æ¶ó
ÀÌÁ¦±îÁö ¼³¸íÇÑ °ÍµéÀÌ DAO¿Í ODBC¿¡¼ Á¦°øÇØ ÁÖ´Â µ¥ÀÌÅͺ£À̽º °ü·Ã ±â´ÉµéÀ̾ú½À´Ï´Ù. MFC¿¡¼´Â µ¥ÀÌÅͺ£À̽º¿Í ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ¸¦ öÀúÈ÷ ±¸ºÐÇØ SQL ¹®ÀåÀ» ¸ð¸£´õ¶óµµ ¹Ì¸® Á¦°øµÇ´Â ¸Þ½îµå¸¸À¸·Î °¡´ÉÇϰԲû ¼³°èµÇ¾î ÀÖ½À´Ï´Ù. ¹«Ã´ ¶Ù¾î³ ±â´ÉÀÌÁö¸¸ SQL ¹®À» Á÷Á¢ È£ÃâÇØ¾ß ÇÒ °æ¿ìµµ ÀÖ½À´Ï´Ù. ƯÈ÷ DBMS ³»ÀÇ ÀúÀå ÇÁ·Î½ÃÀú¸¦ È£ÃâÇÒ ¶§´Â ÇʼöÀûÀÌÁÒ. ±×·± °æ¿ì¸¦ ´ëºñÇÏ¿© Á÷Á¢ SQL ¹®À» ¾²´Â ¹æ¹ýÀÌ ÇÊ¿äÇÕ´Ï´Ù.
ExecuteSQL()¶ó´Â ÇÔ¼ö¸¦ ÅëÇØ DBMS·Î SQL ¹®À» ³¯¸± ¼ö°¡ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ExecuteSQL ÇÔ¼ö´Â CRecordsetÀÌ ¾Æ´Ñ CDatabase Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼öÀÔ´Ï´Ù. ±×·¸´Ù¸é Á÷Á¢ SQLÀ» ÀÌ¿ëÇÒ ¶§´Â CDatabase¸¦ ´Ù½Ã ¼±¾ðÇØ¾ß ÇÒ±î¿ä? ¾Æ´Õ´Ï´Ù. CRecordset¿¡¼µµ ExecuteSQL()À» ãÀ» ¼ö ÀÖ½À´Ï´Ù. ¾î¼¸é À̹ø °Á¿¡¼ ÃÖ°í·Î À¯¿ëÇÑ ºñ±â(?)°¡ ¾Æ´Ò±î ÇÕ´Ï´Ù. ¹Ù·Î ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ExecuteSQL()À» ãÀ» ¼ö ÀÖ½À´Ï´Ù.
m_MyOdbcDB.m_pDatabase->ExecuteSQL( strSQL );
Áï, m_pDatabase´Â CRecordsetÀÇ ¸â¹ö º¯¼ö·Î¼ CDatabase °´Ã¼ÀÇ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ±×¼Ó¿¡¼ -> ¿¬»êÀÚ·Î ExecuteSQL() µî, CDatabaseÀÇ ¸â¹ö ÇÔ¼öµéÀ» °¡Á®´Ù ¾µ ¼ö ÀÖ½À´Ï´Ù. ÀÎÀڷδ CStringÀ» ±×´ë·Î ÀÌ¿ëÇÏ´Ï ¿ëµµ¿¡ ¸Â´Â SQL ¹®À» ±×´ë·Î ¸¸µé¾î º¸³»¸é µË´Ï´Ù. ¹°·Ð ÀúÀå ÇÁ·Î½ÃÀúµµ ExecuteSQL() ¹®À» ÅëÇØ º¸³¾ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ÀúÀå ÇÁ·Î½ÃÀú·Î ¾÷¹«°¡ ¼öÇàµÈ´Ù¸é MFC °³¹ßÀÚ´Â ÀÌ ÇÔ¼ö Çϳª·Î ¸ðµç ÀÛ¾÷À» ¸¶Ä¥ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. m_pDatabase¿Í ExecuteSQL()Àº Æó¼âÀûÀÎ µíÇÑ CRecordset Ŭ·¡½º¿¡¼ CDatabase¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´Ï Àý´ë ÀØÁö ¾Êµµ·Ï ÇսôÙ.
´ÙÀ½ ½Ã°£¿¡´Â OLE-DB¸¦¡¦
ºñ¸¦ ÁÁ¾ÆÇÏ´Â ÇÊÀÚ¶ó À帶°¡ ½ÈÁö¸¸Àº ¾Ê´Â ½Ã±âÀÔ´Ï´Ù. »õº®À» °¡¸®Å°´Â ½Ã°è ¼Ó¿¡¼ À̹ø ¿ø°íµµ ¸¶Ä¥±î ÇÕ´Ï´Ù. ¹«¾ð°¡ ´ë´ÜÈ÷ ¾µ¸¸ÇÑ ¿¹Á¦¸¦ ¸¸µé·Á°í ÇÏ¿´Áö¸¸ µ¥ÀÌÅͺ£À̽º °ü·Ã ÇÔ¼öµéÀÇ ¼³¸í¸¸À¸·Îµµ ÁöÃÄ ±â´ÉÀº ¿ª½Ã ¹ÌÈíÇϱº¿ä. ÇÏÁö¸¸ ½ÇÁ¦ µ¥ÀÌÅͺ£À̽º¸¦ ÀÀ¿ëÇÏ´Â ±â¼úÀº À̰ÍÀ¸·Î ÃæºÐÇÏ´Ù°í »ý°¢µË´Ï´Ù. ³ª¸ÓÁö´Â ÀüºÎ ÄÁÆ®·Ñ UI¿¡ ´ëÇÑ ÄÚµå Ãß°¡»ÓÀÔ´Ï´Ù. ÀÌ ÀϱâÀå ÇÁ·Î±×·¥À» º¸´Ù ¾µ¸¸ÇÑ ÀϱâÀåÀ¸·Î º¯½Å½ÃÄѺ¸¼¼¿ä.
À̹ø ½Ã°£¿¡´Â DAO ¶§¿Í ´Þ¸® ODBC¸¦ ÀÌ¿ëÇØ µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇß½À´Ï´Ù. ODBCÀÇ Æ¯Â¡Àº ¾ÖÇø®ÄÉÀ̼ǰú DBMS »çÀÌÀÇ ºê¸´Áö(´Ù¸®)¶ó´Â »ç½ÇÀ̸ç DBMS°¡ ´Ù¸£´Ù ÇÒÁö¶óµµ °°Àº ÇÔ¼ö·Î ÀÛµ¿µÈ´Ù´Â »ç½ÇÀÔ´Ï´Ù. µû¶ó¼ ¿¢¼¼½º·Î ¸¸µé¾ú´ø ÀϱâÀåÀÇ Ãʱâ Äڵ嵵 ¾Æ¹«·± ¼öÁ¤ ¾øÀÌ Àß ÀÛµ¿µÇ¾úÀ½À» ¸ñ°ÝÇÏ¿´½À´Ï´Ù. ¸¸¾à MS SQL ¼¹ö°¡ ¾ø´Â µ¶ÀÚ¶ó ÇÒÁö¶óµµ ¿¢¼¼½º³ª MySQL µî Àͼ÷ÇÑ DBMS·Î ODBC ¿¬°áÀ» ¸¸µé¾î À̹ø ¿¹Á¦¸¦ ÀÛµ¿½ÃÄÑ º¸±â ¹Ù¶ø´Ï´Ù. Áö±Ý ½Ã°¢À¸·Î´Â ´Ü¼øÇÑ °Í °°Áö¸¸ ODBCÀÇ ÃâÇö¿¡ ȯȣÇß´ø ¾à 10³â ÀüÀÇ °³¹ßÀÚ ¼±¹è´ÔµéÀ» »ó»óÇÏ¸é¼ ¸»ÀÔ´Ï´Ù. ´ÙÀ½ ½Ã°£¿¡´Â OLE-DB¸¦ ÀÌ¿ëÇØ ¶Ç ´Ù¸¥ ÀÛ¾÷À» ÇØº¸·Á ÇÕ´Ï´Ù. OLE¶õ ¸»ÀÌ µé¾î°¡´Ï±î COM¿¡ °üÇÑ ³»¿ëÀ» ¹Ì¸® Àо¼¼¿ä.
´ÙÇàÈ÷ À¯³ª°¡ ºÒ·¯ÁØ ·Ñ¹é(Roll Back) ÀúÀå ÇÁ·Î½ÃÀú¸¦ ExecuteSQL() ¹®À¸·Î ÀÛµ¿½ÃÄ×Áö. °¨ÅºÇß´ø °ÍÀº DBMS ·Î±×ÀÎ Á¤º¸±îÁö ±³¹¦È÷ Áö¿öÁÖ´õ±º. ÇѸ¶µð·Î ÀÌ·² ¶§ ¾²¶ó°í ¸¸µç ÀúÀå ÇÁ·Î½ÃÀú °°¾Ò¾î. °æ¿Ü½º·± ¸¾À¸·Î ÀúÀå ÇÁ·Î½ÃÀú¸¦ õõÈ÷ Àо´Ï ÀÛ¼ºÀÚ°¡ À¯³ªÀݾÆ. Ȥ½Ã À¯³ªµµ ÀÌ·± ÀÏÀ» ÀÚÁÖ °Þ¾ú´ø °ÍÀº ¾Æ´Ò±î? Èì... ÀÌ·± ÀÏ Á¤µµ´Â ÈǸ¢ÇÑ °³¹ßÀÚ°¡ µÇ±â À§ÇÑ °ü¹®À̶ó »ý°¢ÇÏÀÚ±¸. @
¢º Àüü ¼Ò½º ´Ù¿î·Îµå