TN068: 7 Microsoft Access ODBC µå¶óÀ̹ö¿Í ÇÔ²² Æ®·£Àè¼Ç ¼öÇà

ÀÌ ³ëÆ® ¶§ Microsoft ODBC Desktop Driver Pack ¹öÀü 3.0¿¡¿¡¼­ Æ÷ÇÔ µÈ Microsoft Access 7.0 ODBC µå¶óÀ̹ö ¹× MFC ODBC µ¥ÀÌÅͺ£À̽º Ŭ·¡½º¸¦ »ç¿ë ÇÏ ¿© Æ®·£Àè¼ÇÀ» ¼öÇà ÇÏ´Â ¹æ¹ýÀ» ¼³¸í ÇÕ´Ï´Ù.

°³¿ä

Æ®·£Àè¼ÇÀ» ¼öÇà ÇÏ´Â µ¥ÀÌÅͺ£À̽º ÀÀ¿ë ÇÁ·Î±×·¥À» È£Ãâ ÇÏ´Â CDatabase::BeginTrans ¹× CRecordset::Open ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ¿Ã¹Ù¸¥ ¼ø¼­·Î Á¶½É ÇØ¾ß ÇÕ´Ï´Ù. Microsoft Access 7.0 µå¶óÀ̹ö´Â Microsoft Jet µ¥ÀÌÅͺ£À̽º ¿£ÁøÀ» »ç¿ë ÇÏ °í Jet ÀÀ¿ë ÇÁ·Î±×·¥ ¿­¸° Ä¿¼­ ÀÖ´Â ¸ðµç µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇØ Æ®·£Àè¼ÇÀ» ½ÃÀÛ ÇÏÁö ÇÊ¿ä ÇÕ´Ï´Ù. MFC ODBC µ¥ÀÌÅͺ£À̽º Ŭ·¡½º¿¡ ´ë ÇÑ ¿­¸° Ä¿¼­ ¿­·Á ÀÖ´Â CRecordset °³Ã¼¿¡ »ó´ç¡£

BeginTrans¸¦ È£Ãâ Çϱâ Àü¿¡ recordsetÀ» ¿­¸é ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³ªÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, ÀÀ¿ë ÇÁ·Î±×·¥Àº CRecordset::Update¸¦ È£ÃâÇÑ ÈÄ ¿µ±¸Àû ·¹ÄÚµå ÁýÇÕ ¾÷µ¥ÀÌÆ® ¹× ¾÷µ¥ÀÌÆ®°¡ µÇÁö ·Ñ¹éµË´Ï´Ù RollbackÀ» È£Ãâ ÇÏ ¿©. ÀÌ ¹®Á¦¸¦ ¹æÁö ÇÏ·Á¸é ¸ÕÀú BeginTrans ¸¦ È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù ¹× ´ÙÀ½ ·¹ÄÚµå ÁýÇÕÀ» ¿±´Ï´Ù.

MFC´Â Ä¿¼­ Ä¿¹Ô ¹× ·Ñ¹é µ¿ÀÛ¿¡ ´ë ÇÑ µå¶óÀ̹ö ±â´ÉÀ» °Ë»çÇÕ´Ï´Ù. CDatabase Ŭ·¡½º ¿ÀÇ CRecordset °³Ã¼¿¡ ¸ðµç °Å·¡ÀÇ È¿°ú È®ÀÎ ÇÏ·Á¸é GetCursorCommitBehavior ¹× GetCursorRollbackBehavior, µÎ °³ÀÇ ¸â¹ö ÇÔ¼ö¸¦ Á¦°ø ÇÕ´Ï´Ù. Microsoft Access 7.0 ODBC µå¶óÀ̹ö¿¡ ´ë ÇÑ ÀÌ·¯ÇÑ ¸â¹ö ÇÔ¼ö´Â ¾×¼¼½º µå¶óÀ̹ö´Â Ä¿¼­ º¸Á¸À» Áö¿ø ÇÏÁö ¾ÊÀ¸¹Ç·Î SQL_CB_CLOSE ¸¦ ¹Ýȯ ÇÕ´Ï´Ù. µû¶ó¼­, CRecordset::Requery CommitTrans ¶Ç´Â Rollback ÀÛ¾÷À» È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù.

ÇϳªÀÇ ´Ù¸¥ ¿©·¯ Æ®·£Àè¼ÇÀ» ¼öÇà ÇØ¾ß ÇÏ´Â °æ¿ì ù ¹ø° Æ®·£Àè¼ÇÀÌ ÈÄ Requery ¸¦ È£Ãâ ÇÏ °í Áß Çϳª¸¦ ½ÃÀÛ ¼ö ¾ø½À´Ï´Ù. JetÀÇ ¿ä±¸ »çÇ×À» ÃæÁ· Çϱâ À§ÇØ BeginTrans ¸¦ ´ÙÀ½ È£Ãâ Çϱâ Àü¿¡ ·¹ÄÚµå ÁýÇÕÀ» ´Ý¾Æ¾ß ÇÕ´Ï´Ù. ÀÌ ±â¼ú ³ëÆ®¿¡¼­´ÂÀÌ »óȲÀ» ó¸® ÇÏ´Â µÎ °¡Áö ¹æ¹ýÀ» ¼³¸í ÇÕ´Ï´Ù.:

°¢ CommitTrans ¶Ç´Â Rollback ÀÛ¾÷ÀÌ ÈÄ ·¹ÄÚµå ÁýÇÕ ´Ý±â

Æ®·£Àè¼ÇÀÌ ½ÃÀÛ Çϱâ Àü¿¡ recordset °³Ã¼°¡ ´ÝÇô ÀÖ´ÂÁö È®ÀÎ ÇÕ´Ï´Ù. BeginTrans¸¦ È£ÃâÇÑ ÈÄ ·¹ÄÚµå ÁýÇÕÀÇ Open ¸â¹ö ÇÔ¼ö¸¦ È£Ãâ ÇÕ´Ï´Ù. CommitTrans ¶Ç´Â RollbackÀ» È£ÃâÇÑ ÈÄ Áï½Ã ·¹ÄÚµå ÁýÇÕÀ» ´Ý½À´Ï´Ù. Note ¹Ýº¹ÀûÀ¸·Î ¿­°í ·¹ÄÚµå ÁýÇÕÀ» ´Ý´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¼º´ÉÀÌ ÀúÇÏ µÉ ¼ö ÀÖ½À´Ï´Ù¡£

Sqlfreestmt¸¦ »ç¿ë ÇÏ ¿©

¶ÇÇÑ SQLFreeStmt ODBC API ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© ¸í½ÃÀûÀ¸·Î Æ®·£Àè¼ÇÀ» Á¾·á ÈÄ Ä¿¼­¸¦ ´Ý½À´Ï´Ù. ´Ù¸¥ Æ®·£Àè¼ÇÀ» ½ÃÀÛ ÇÏ·Á¸é BeginTrans µÚ¿¡ CRecordset::Requery¸¦ È£Ãâ ÇÕ´Ï´Ù. SQLFreeStmt¸¦ È£ÃâÇÒ ¶§ ù ¹ø° ¸Å°³ º¯¼ö¿Í µÎ ¹ø° ¸Å°³ º¯¼ö·Î SQL_CLOSE À¸·Î ·¹ÄÚµå ÁýÇÕÀÇ HSTMT¸¦ ÁöÁ¤ ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ´Ý°í ¸ðµç Æ®·£Àè¼ÇÀÇ ½ÃÀÛ ·¹ÄÚµå ÁýÇÕÀ» ¿­±â º¸´Ù ºü¸¨´Ï´Ù. ´ÙÀ½ Äڵ忡¼­´ÂÀÌ ±â¼úÀ» ±¸Çö ÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.

 CMyDatabase db;
dbÀÔ´Ï´Ù.¿­±â ("MYDATASOURCE");
CMyRecordset rs (amp; db);

/ / Æ®·£Àè¼Ç 1À» ½ÃÀÛ ÇÏ °í / / ·¹ÄÚµå ÁýÇÕÀ» ¿±´Ï´Ù
dbÀÔ´Ï´Ù.BeginTrans ();
rsÀÔ´Ï´Ù.¿­±â ();

/ / µ¥ÀÌÅÍ Á¶ÀÛ

/ / ³¡ Æ®·£Àè¼Ç 1
dbÀÔ´Ï´Ù.CommitTrans ();? / / ¶Ç´Â ·Ñ¹é)

/ / Ä¿¼­
:: SQLFreeStmt (rs.m_hstmt, SQL_CLOSE);

/ / Æ®·£Àè¼Ç 2 ½ÃÀÛ
dbÀÔ´Ï´Ù.BeginTrans ();

/ / ÀÌÁ¦ °á°ú ÁýÇÕÀ» ¾òÀ»
rsÀÔ´Ï´Ù.Requery ();

/ / µ¥ÀÌÅÍ Á¶ÀÛ

/ / ³¡ Æ®·£Àè¼Ç 2
dbÀÔ´Ï´Ù.CommitTrans ();

rsÀÔ´Ï´Ù.Close ();
dbÀÔ´Ï´Ù.Close)(&A)

ÀÌ ±â¼úÀ» ±¸Çö ÇÏ´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀº RequeryWithBeginTrans, ´ÙÀ½ Æ®·£Àè¼Ç ÈÄ¿¡ Ä¿¹Ô ¶Ç´Â ·Ñ¹é ù ¹ø° ½ÃÀÛÀ» È£ÃâÇÒ ¼ö ÀÖ´Â »õ·Î¿î ÇÔ¼ö¸¦ ÀÛ¼º ÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·¯ÇÑ ÇÔ¼ö¸¦ ÀÛ¼º ÇÏ·Á¸é ´ÙÀ½ ´Ü°è¸¦ ¼öÇà:

  1. »õ·Î¿î ÇÔ¼ö CRecordset::Requery () ¿¡ ´ë ÇÑ Äڵ带 º¹»ç¡£

  2. SQLFreeStmtÀ» È£ÃâÇÑ ÈÄ Áï½Ã ´ÙÀ½ ÁÙÀ» Ãß°¡:
    m_pDatabase-gt;BeginTrans(& );

Áö±Ý °Å·¡ÀÇ °¢ ½Ö »çÀÌÀÌ ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.:

/ / Æ®·£Àè¼Ç 1À» ½ÃÀÛ ÇÏ °í / / ·¹ÄÚµå ÁýÇÕÀ» ¿±´Ï´Ù
dbÀÔ´Ï´Ù.BeginTrans ();
rsÀÔ´Ï´Ù.¿­±â ();

/ / µ¥ÀÌÅÍ Á¶ÀÛ

/ / ³¡ Æ®·£Àè¼Ç 1
dbÀÔ´Ï´Ù.CommitTrans (); nbsp; / / ¶Ç´Â ·Ñ¹é)

/ / Ä¿¼­ ´Ý±â, »õ Æ®·£Àè¼ÇÀ» ½ÃÀÛ
/ / °á°ú ÁýÇÕÀ» ¾òÀ»
rsÀÔ´Ï´Ù.RequeryWithBeginTrans ();

/ / µ¥ÀÌÅÍ Á¶ÀÛ

/ / ³¡ Æ®·£Àè¼Ç 2
dbÀÔ´Ï´Ù.CommitTrans ();? / / ¶Ç´Â ·Ñ¹é)(&N)

¸Þ¸ðnbsp;??·¹ÄÚµå ÁýÇÕ ¸â¹ö º¯¼ö m_strFilter ¶Ç´Â m_strSort Æ®·£Àè¼Ç °£¿¡ º¯°æ ÇØ¾ß ÇÏ´Â °æ¿ì¿¡ÀÌ ±â¹ýÀ» »ç¿ë ÇÏÁö ¸¶½Ê½Ã¿À. ÀÌ °æ¿ì, °¢ CommitTrans ¶Ç´Â Rollback ÀÛ¾÷ ÈÄ ·¹ÄÚµå ´Ý¾Æ¾ß(&N)¡£

±â¼ú ³ëÆ® ¹øÈ£·Î |nbsp; Ä«Å×°í¸®º° ±â¼ú ³ëÆ®(&N)

Index