µ¿±âÈ­ ¹æ¹ý ¾²±â ¹× Jet OLE DB °ø±ÞÀÚ ¹× ADO Àбâ

±â¼ú ÀÚ·á: 200300 - ÀÌ ¹®¼­°¡ Àû¿ëµÇ´Â Á¦Ç° º¸±â.
¸ðµÎ È®´ë | ¸ðµÎ Ãà¼Ò

¿ä¾à

µ¶¸³ÀûÀÎ Jet ¼¼¼ÇÀ» Jet OLE DB °ø±ÞÀÚ¸¦ »ç¿ëÇÏ´Â ¸ðµç ADO ¿¬°áÀ» À¯ÁöÇÕ´Ï´Ù. ÇÑ ¿¬°á¿¡¼­ µÎ °³ÀÇ ¿¬°áÀÌ °°Àº µ¥ÀÌÅͺ£À̽º ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ÀÖ´Â °æ¿ì¿¡µµ µÎ ¹øÂ° ¿¬°á¿¡¼­ ÀÐ°í ¾²±â °£ÀÇ Áö¿¬ °á°ú.

ÀÌ ºñµ¿±â ¾²±â/Àб⠵¿ÀÛÀÔ´Ï´Ù. Microsoft Jet Çâ»óµÈ µ¥ÀÌÅͺ£À̽º ¼º´ÉÀ» Á¦°øÇϱâ À§ÇØ ½Ã½ºÅÛ ¹öÆÛ¸µ ÆäÀÌÁö¸¦ »ç¿ëÇÏ°í ½Ã½ºÅÛ ¹öÆÛ¸µ ÀÌ ÆäÀÌÁö¸¦ ÇØÁ¦ÇÒ ¼ö ¾ø½À´Ï´Ù.

µ¶¸³ÀûÀÎ ADO ¿¬°áÀ» »ç¿ëÇÒ ¶§ JetÀÇ Áö¿¬µÈ ¾²±â/Àб⠵¿ÀÛÀ» ¼³¸íÇϱâ À§ÇØ °£´ÜÇÑ VB ¾ç½Ä¿¡ ÀÖ´Â ´ÜÃ߸¦ ´ÙÀ½ Äڵ带 ½ÇÇàÇϽʽÿÀ.

Const USE_SAME_CONNECTION = False

Sub MissedReadsDemo()
Dim conn1 As New ADODB.Connection
Dim conn2 As New ADODB.Connection
Dim rs As New ADODB.recordset
Dim strConnect As String
Dim i As Long

    ' Set up our connection string (requires a database named c:\db1.mdb).
    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db1.mdb"

    ' Open connection 1 and drop and re-create test table.
    conn1.CursorLocation = adUseServer
    conn1.Open strConnect
    On Error Resume Next
    conn1.Execute "drop table tmpTest", , _
        adExecuteNoRecords + adCmdText
    On Error GoTo 0
    conn1.Execute "create table tmpTest (id long)", , _
        adExecuteNoRecords + adCmdText
    
    ' Close connection 1 to flush the creation of table tmpTest. 
    conn1.Close
    
    ' Now open connection 1 and connection 2.
    conn1.Open strConnect
    conn2.Open strConnect
    
    ' Insert 10 records using connection 1.
    For i = 1 To 10
        conn1.Execute "insert into tmpTest (id) values (1)", , _
            adExecuteNoRecords + adCmdText
    Next i
    
    ' Attempt to read records using second connection if
    ' USE_SAME_CONNECTION is set to False.
    If (USE_SAME_CONNECTION) Then
        Set rs = conn1.Execute("select * from tmpTest", , adCmdText)
    Else
        Set rs = conn2.Execute("select * from tmpTest", , adCmdText)
    End If
    
    ' Count records in our table (should be 10).
    i = 0
    While Not rs.EOF
        i = i + 1
        rs.MoveNext
    Wend
    rs.Close

    If (USE_SAME_CONNECTION) Then
        MsgBox "Read " & i & " records using same connection."
    Else
        MsgBox "Read " & i & " records using 2 different connections."
    End If
    
    conn1.Close
    conn2.Close

End Sub
				
Âü°í À§ÀÇ »ùÇà Äڵ带 ¹Ýº¹Çؼ­ ½ÇÇàÇÒ °æ¿ì ÀϽÃÀûÀ¸·Î 10 ¾òÀ» °ÍÀÔ´Ï´Ù USE_SAME_CONNECTION Ç÷¡±× False·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì ¹ÝȯµÇ´Â ¹ÝȯµÈ ¶Ç´Â 0 ·¹Äڵ带 ±â·ÏÇÕ´Ï´Ù. ÀÌ ¾²°í, Jet OLEDB °ø±ÞÀÚ 4.0 µÎ ADO ¿¬°áÀ» ¿ÏÀüÈ÷ µ¿±âÀÖÁö ¾Ê½À´Ï´Ù »ç¿ëÇÒ ¶§ Àд ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù. USE_SAME_CONNECTION Ç÷¡±× True·Î ¼³Á¤µÈ °æ¿ì, ¹ÝȯµÈ 10°³ÀÇ ·¹Äڵ带 Ç×»ó ³ªÅ¸³³´Ï´Ù. ¾²±â ¹× µ¿ÀÏÇÏ°Ô ÀÐÀº º¸¿© Jet OLEDB °ø±ÞÀÚ 4.0À» »ç¿ëÇÏ´Â °æ¿ì 100% µ¿±â ADO ¿¬°áÀÌ ÀÖ½À´Ï´Ù.

Ãß°¡ Á¤º¸

ƯÁ¤ »óȲ¿¡¼­ µÎ °¡Áö º°µµÀÇ ADO ¿¬°á ÀÛ¼º ¹× Jet OLEDB °ø±ÞÀÚ¸¦ »ç¿ëÇÏ¿© Access µ¥ÀÌÅͺ£À̽º¿¡¼­ µ¥ÀÌÅ͸¦ ÀÐÀ» ¶§ »ç¿ëÇØ¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¾²±â ¹× Àб⠰°Àº Access µ¥ÀÌÅͺ£À̽º¿¡ µÎ °³ÀÇ º°µµÀÇ ÇÁ·Î¼¼½º°¡ ÀÖÀ¸¸é ¹æ¹ýÀº ´ÜÀÏ ¿¬°áÀ» °øÀ¯ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ »óȲ¿¡¼­ ¾²±â¸¦ µ¿±âÈ­ÇÒ ¼ö ¹× º°µµÀÇ ADO ¿¬°áÀ» »ç¿ëÇÏ¿© ÀÌ·¯ÇÑ ÁöħÀ» ÀÐ°í µû¶ó¾ß:

  1. ÀÛ¼º±â¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ¾²´Â µ¥ Àü¿¡ ADOÀÇ Connection.BeginTrans, Æ®·£Àè¼Ç, ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù.
  2. ÀÛ¼º±â°¡ µ¥ÀÌÅͺ£À̽º ¾÷µ¥ÀÌÆ®¸¦ È®ÀÎÇÑ ´ÙÀ½ ADOÀÇ Connection.CommitTrans »ç¿ëÇÏ¿© Æ®·£Àè¼Ç Ä¿¹Ô ÇÕ´Ï´Ù.
  3. ÆÇµ¶±â°¡ Àü¿¡ µ¥ÀÌÅ͸¦ Àд µ¿¾È ÇØ´ç ¿¬°áÀ» Àü´ÞÇÏ¿© JRO.JetEngine.RefreshCache È£ÃâÇØ¾ß ÇÕ´Ï´Ù.
JRO.JetEngine VB ÇÁ·ÎÁ§Æ®¿¡ Microsoft Jet ¹× º¹Á¦ °³Ã¼ 2.1 ¶óÀ̺귯¸®¿¡ ´ëÇÑ ÂüÁ¶¸¦ Ãß°¡ÇÏ¿© Æ÷ÇԵǾî ÀÖÀ½À» À¯ÀÇÇϽʽÿÀ.

´ÙÀ½ ÄÚµå ¿¹Á¦¿¡¼­´Â À§ÀÇ ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© µÎ °³ÀÇ ¿¬°áÀ» µ¿±âÈ­ÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.

Sub SyncReadDemo()
Dim conn1 As New ADODB.Connection
Dim conn2 As New ADODB.Connection
Dim rs As New ADODB.recordset
Dim JRO As New JRO.JetEngine
Dim strConnect As String
Dim i As Long

    ' Set up our connection string (requires a database named c:\db1.mdb).
    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db1.mdb"

    ' Open connection 1 and drop and re-create test table.
    conn1.CursorLocation = adUseServer
    conn1.Open strConnect
    On Error Resume Next
    conn1.Execute "drop table tmpTest", , _
        adExecuteNoRecords + adCmdText
    On Error GoTo 0
    conn1.Execute "create table tmpTest (id long)", , _
        adExecuteNoRecords + adCmdText
    
    ' Close connection 1 to flush the creation of table tmpTest. 
    conn1.Close
    
    ' Now open connection 1 and connection 2.
    conn1.Open strConnect
    conn2.Open strConnect
    
    ' Insert 10 records using connection 1.
    ' Note we must perform all writes inside of a transaction.
    conn1.BeginTrans
    For i = 1 To 10
        conn1.Execute "insert into tmpTest (id) values (1)", , _
            adExecuteNoRecords + adCmdText
    Next i
    conn1.CommitTrans
    
    ' Refresh cache for reader connection.
    JRO.RefreshCache conn2
    Set rs = conn2.Execute("select * from tmpTest", , adCmdText)
    
    ' Count records in our table (should be 10).
    i = 0
    While Not rs.EOF
        i = i + 1
        rs.MoveNext
    Wend
    rs.Close

    MsgBox "Read " & i & " records using different connections."
    
    conn1.Close
    conn2.Close

End Sub
				
À§ÀÇ Äڵ带 ½ÇÇàÇÏ¸é ÆÇµ¶±â ¿¬°á¿¡ ÀÇÇØ ¹ÝȯµÈ 10°³ÀÇ ·¹Äڵ带 Ç×»ó ±¸ÇØ¾ß ÇÕ´Ï´Ù. RefreshCache, È£ÃâÀ» ÁÖ¼®À¸·Î ¶Ç´Â Æ®·£Àè¼ÇÀÌ µ¥ÀÌÅ͸¦ ¾²´Â µ¿¾È »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ¹ÝȯµÇ´Â ·¹ÄÚµå ¼ö¸¦ Ç×»ó 10 ¾Ê½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ´ÙÀ½ µ¿±âÈ­µÈ ¾²±â ¹× Àб⸦ º°µµÀÇ ÇÁ·Î¼¼½º °£¿¡ ADO´Â Microsoft Jet OLE DB °ø±ÞÀÚ 4.0 ÇÔ²² »ç¿ëÇÒ ¶§ Çã¿ëµË´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â ADO¸¦ »ç¿ëÇϸé Microsoft Access ODBC µå¶óÀ̹ö¸¦ »ç¿ëÇÒ ¶§ ÀÛµ¿ÇÏÁö ¾Ê´Â À¯ÀÇÇϽʽÿÀ. Microsoft Access ODBC µå¶óÀ̹ö°¡ µ¿±âÈ­µÈ °³¿Í Àбâ ÀÛ¾÷ °£ÀÇ ¸ðµç »óȲ¿¡ ¾Æ·¡¿¡ µÎ °è¼Ó ¿­¸° ADO ¿¬°á Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù. ¼º°øÀûÀ¸·Î ÀÛ¼ºÇϰí ADO¸¦ »ç¿ëÇϸé Microsoft Access ODBC µå¶óÀ̹ö¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ÀÐÀ» ¼ö ÀÛ¼º±â¿¡ ¿¬°á ¾²±â ¿Ï·áµÇ°í ÆÇµ¶±â ¿¬°á ÇÕ´Ï´Ù ´ÝÇû´Ù°¡ µ¥ÀÌÅ͸¦ Àбâ Àü¿¡ ´Ý¾Æ¾ß ÇÕ´Ï´Ù. µ¿±âÈ­ÇÏ·Á¸é ´ÙÀ½ ¸Þ¼­µå¸¦ ¾²°í Microsoft Access ODBC µå¶óÀ̹ö °¡Áø 2 ¿¬°á ¹× ADO »çÀÌÀÇ ÀнÀ´Ï´Ù.

  1. ÀÛ¼º±â°¡ µ¥ÀÌÅͺ£À̽º ¾÷µ¥ÀÌÆ® (Æ÷ÇÔ ¶Ç´Â Á¦¿Ü Æ®·£Àè¼Ç) È®ÀÎÇÑ ´ÙÀ½ ÀÌ °³Ã¼ÀÇ ¿¬°áÀ» ´Ý½À´Ï´Ù ÇÕ´Ï´Ù.
  2. ÆÇµ¶±â¸¦ ´Ý°í Àü¿¡ µ¥ÀÌÅ͸¦ Àд µ¿¾È ±× ¿¬°áÀ» ´Ù½Ã ¿­¾î¾ß ÇÕ´Ï´Ù.

ÂüÁ¶

180223µ¿±âÈ­ ÀÐ±â ¹× ¾²±â µÎ DAO ÇÁ·Î¼¼½º °£ ¹æ¹ý

¼Ó¼º

±â¼ú ÀÚ·á: 200300 - ¸¶Áö¸· °ËÅä: 2004³â 7¿ù 13ÀÏ È­¿äÀÏ - ¼öÁ¤: 1.1
º» ¹®¼­ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
  • Microsoft OLE DB Provider for Jet 4.0
Ű¿öµå:?
kbmt kbdatabase kbhowto kbjet kbprovider KB200300 KbMtko
±â°è ¹ø¿ªµÈ ¹®¼­
Áß¿ä: º» ¹®¼­´Â Àü¹® ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ °ÍÀÌ ¾Æ´Ï¶ó Microsoft ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î·Î ¹ø¿ªÇÑ °ÍÀÔ´Ï´Ù. Microsoft´Â ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ ¹®¼­ ¹× ±â°è ¹ø¿ªµÈ ¹®¼­¸¦ ¸ðµÎ Á¦°øÇϹǷΠMicrosoft ±â¼ú ÀÚ·á¿¡ ÀÖ´Â ¸ðµç ¹®¼­¸¦ Çѱ۷ΠÁ¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ±â°è ¹ø¿ª ¹®¼­°¡ Ç×»ó ¿Ïº®ÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. µû¶ó¼­ ±â°è ¹ø¿ª ¹®¼­¿¡´Â ¸¶Ä¡ ¿Ü±¹ÀÎÀÌ Çѱ¹¾î·Î ¸»ÇÒ ¶§ ½Ç¼ö¸¦ ÇÏ´Â °Íó·³ ¾îÈÖ, ±¸¹® ¶Ç´Â ¹®¹ý¿¡ ¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Microsoft´Â ³»¿ë»óÀÇ ¿À¿ª ¶Ç´Â Microsoft °í°´ÀÌ ÀÌ·¯ÇÑ ¿À¿ªÀ» »ç¿ëÇÔÀ¸·Î½á ¹ß»ýÇÏ´Â ºÎ Á¤È®¼º, ¿À·ù ¶Ç´Â ¼ÕÇØ¿¡ ´ëÇØ Ã¥ÀÓÀ» ÁöÁö ¾Ê½À´Ï´Ù. Microsoft´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÚÁÖ ¾÷µ¥ÀÌÆ®Çϰí ÀÖ½À´Ï´Ù.
´õ ÀÌ»ó Áö¿øµÇÁö ¾Ê´Â Á¦Ç°ÀÇ KB ³»¿ë¿¡ ´ëÇÑ °íÁö »çÇ×
ÀÌ ¹®¼­¿¡¼­´Â Microsoft¿¡¼­ ´õ ÀÌ»ó Áö¿øÇÏÁö ¾Ê´Â Á¦Ç°¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. µû¶ó¼­ ÀÌ ¹®¼­´Â "ÀÖ´Â ±×´ë·Î" Á¦°øµÇ¸ç ¾÷µ¥ÀÌÆ®µÇÁö ¾Ê½À´Ï´Ù.

Çǵå¹é º¸³»±â