검색 및 ADO를 사용하여 SQL Server 텍스트 필드 업데이트 방법

기술 자료 번역 기술 자료 번역
기술 자료: 180368 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 액세스하고 ADO (ActiveX 데이터 개체)를 사용하여 큰 텍스트 필드 (이진 대형 개체/BLOB) 업데이트 방법을 보여 줍니다. ADODB RecordSet 필드 개체의 GetChunkAppendChunk 메서드를 사용하여 수행할 수 있습니다.

추가 정보

단계별 지침 샘플 프로젝트

  1. 새 프로젝트를 엽니다. 기본적으로 Form1이 만들어집니다.
  2. 프로젝트 메뉴에서 참조 를 클릭한 다음 Microsoft ActiveX 데이터 개체 라이브러리에 대한 참조를 설정하십시오.
  3. 프로젝트에 새 표준 모듈을 추가하고 다음 코드를 붙여 넣습니다.
       Global cn As ADODB.Connection
       Global cmd1 As ADODB.Command
       Global rsset As ADODB.Recordset
    
       Const BLOCKSIZE As Long = 4096
    
       Public Sub ColumnToFile(Col As ADODB.Field, DiskFile As String)
        'Retrieves data from the database and puts it into a temp file on
        'the hard drive.
        'The size of the chunk is in the variable BLOCKSIZE (4096).
    
       Dim NumBlocks As Long  'Holds the number of chunks.
       Dim LeftOver As Long   '# of chars left over after last whole chunk.
       Dim strData As String
       Dim DestFileNum As Long
       Dim I As Long
       Dim ColSize As Long
    
       'Make sure that you aren't in an empty recordset.
        If Not rsset.EOF And Not rsset.BOF Then
        ColSize = Col.ActualSize
    
       'If filelength > 0, then it is soiled:
       ' throw away contents.
        If Len(Dir$(DiskFile)) > 0 Then
          Kill DiskFile
        End If
    
        DestFileNum = FreeFile
        Open DiskFile For Binary As DestFileNum
        NumBlocks = ColSize \ BLOCKSIZE
        LeftOver = ColSize Mod BLOCKSIZE
    
        'Now Write data to the file in chunks.
         For I = 1 To NumBlocks
         strData = String(BLOCKSIZE, 0)
         strData = Col.GetChunk(BLOCKSIZE)
         Put DestFileNum, , strData
         Next I
         strData = String(LeftOver, 0)
         strData = Col.GetChunk(LeftOver)
         Put DestFileNum, , strData
    
         Close DestFileNum
         End If
          End Sub
    
         Sub FileToColumn(Col As ADODB.Field, DiskFile As String)
         'Takes data from the temp file and saves it to the database.
    
           Dim strData As String
           Dim NumBlocks As Long
           Dim FileLength As Long
           Dim LeftOver As Long
           Dim SourceFile As Long
           Dim I As Long
    
           SourceFile = FreeFile
           Open DiskFile For Binary Access Read As SourceFile
           FileLength = LOF(SourceFile)
           If FileLength = 0 Then
            Close SourceFile
            MsgBox DiskFile & " Empty or Not Found."
           Else
            NumBlocks = FileLength \ BLOCKSIZE
            LeftOver = FileLength Mod BLOCKSIZE
            Col.AppendChunk Null
            strData = String(BLOCKSIZE, 0)
            For I = 1 To NumBlocks
             Get SourceFile, , strData
             Col.AppendChunk strData
            Next I
            strData = String(LeftOver, 0)
            Get SourceFile, , strData
            Col.AppendChunk strData
            rsset.Update
            Close SourceFile
           End If
          End Sub
    
          Public Sub FileToForm(DiskFile As String, SomeControl As Control)
           'Retrieves data from the temp file and puts it onto the control.
    
           Dim SourceFile As Long
           Dim FileLength As Long
           Dim strData As String
    
           SourceFile = FreeFile
           Open DiskFile For Binary Access Read As SourceFile
           FileLength = LOF(SourceFile)
           If FileLength = 0 Then
            Close SourceFile
            MsgBox DiskFile & " Empty or Not Found."
           Else
            strData = String(FileLength, 0)
            Get SourceFile, , strData
            SomeControl.Text = strData
            Close SourceFile
           End If
          End Sub
    
          Sub FormToFile(DiskFile As String, SomeControl As Control)
           'Saves data from the form into a temp file on the local hard drive.
    
           Dim DestinationFile As Long
           Dim FileLength As Long
           Dim strData As String
    
           If Len(Dir$(DiskFile)) > 0 Then
            Kill DiskFile
           End If
           DestinationFile = FreeFile
           Open DiskFile For Binary As DestinationFile
           strData = SomeControl.Text
           Put DestinationFile, , strData
           Close DestinationFile
          End Sub
  4. Form1 기본 사용:
    1. RichTextBox 컨트롤을 추가 및 Name 속성을 "rtbText" 로 설정
    2. 명령 단추 컨트롤을 추가하고 해당 Name 속성에 "cmdPrev" 및 "Prev." 로 Caption 속성을 설정하십시오.
    3. 명령 단추 컨트롤을 추가하고 컨트롤의 Name 속성은 "cmdNext" 로 설정하고 Caption 속성에 "다음"
    4. 명령 단추 컨트롤을 추가하고 해당 Name 속성에 "cmdSave" 및 "Update" Caption 속성을 설정하십시오.
  5. 폼에 다음 코드를 붙여:
       Option Explicit
    
       Dim DiskFile As String
    
          Private Sub cmdNext_Click()
           If (rsset.RecordCount > 0) And (Not rsset.EOF) Then
            rsset.MoveNext
            If Not rsset.EOF Then
             rtbText.Text = ""
             ColumnToFile rsset.Fields("pr_info"), DiskFile
             FileToForm DiskFile, rtbText
            Else
             rsset.MoveLast
            End If
           End If
          End Sub
    
          Private Sub cmdPrev_Click()
           If (rsset.RecordCount > 0) And (Not rsset.BOF) Then
            rsset.MovePrevious
            If Not rsset.BOF Then
             rtbText.Text = ""
             ColumnToFile rsset.Fields("pr_info"), DiskFile
             FileToForm DiskFile, rtbText
            Else
             rsset.MoveFirst
            End If
           End If
          End Sub
    
          Private Sub cmdSave_Click()
           FormToFile DiskFile, rtbText
           FileToColumn rsset.Fields("pr_info"), DiskFile
          End Sub
    
          Private Sub Form_Activate()
           rtbText.Text = ""
           If rsset.RecordCount > 0 Then
            rsset.MoveFirst
            ColumnToFile rsset.Fields("pr_info"), DiskFile
            FileToForm DiskFile, rtbText
           End If
          End Sub
    
          Private Sub Form_Load()
    
           Dim ConnectString As String
           Dim anerror As ADODB.Error
           Dim Sql As String
    
           On Error GoTo handler
    
           DiskFile = App.Path & "\BLOB.txt"
    
           'Set the connect string to use pubs on your SQL server.
           ConnectString = _
           "Driver={SQL SERVER};Server=<yourserver>;Database=pubs;UID=sa;pwd=;"
           Sql = "SELECT pr_info FROM pub_info;"
           Set cn = New ADODB.Connection
           cn.ConnectionString = ConnectString
           cn.Open
           Set rsset = New ADODB.Recordset
           rsset.Open Sql, cn, adOpenKeyset, adLockOptimistic, adCmdText
          Exit Sub
    
          handler:
           For Each anerror In cn.Errors
            Debug.Print anerror.Number & ":  " & anerror.Description & _
            " - " & anerror.SQLState
           Next anerror
          End Sub
  6. 해당 connectstring ServerName 해당 서버 이름을 변경하십시오.
  7. 예제 프로젝트를 실행하십시오. RichTextBox 레코드 집합의 첫 번째 레코드가 포함됩니다.
  8. 다음 을 클릭하십시오. 마지막 레코드로 이동할 때까지 RichTextBox 내용을 다음 레코드로 변경할 알 수 있습니다. 다음 단추를 레코드 집합의 MoveNext 메서드를 호출하고 ColumnToFileFileToForm 메서드를 호출합니다.
  9. 이전 을 클릭하십시오. 첫 번째 레코드로 이동할 때까지 RichTextBox 내용을 이전 레코드로 변경할 알 수 있습니다. [이전] 단추 레코드 집합의 MovePrevious 메서드를 호출하고 ColumnToFileFileToForm 메서드를 호출합니다.
  10. 새로운 텍스트 상자에 입력한 다음 텍스트 필드에 사용하고 모든 레코드 수정하려면 업데이트 클릭하십시오. 업데이트 단추를 있는 레코드 집합의 Update 메서드를 차례로 호출하여 FormToFileFileToColumn 메서드를 호출합니다. 데이터베이스에 새 데이터가 업데이트되지 합니다.

속성

기술 자료: 180368 - 마지막 검토: 2014년 2월 22일 토요일 - 수정: 1.5
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 서비스 팩 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Visual Basic 5.0 Professional Edition?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows NT 4.0
    • Microsoft Windows 95
  • Microsoft Visual Basic 6.0 Professional Edition?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows NT 4.0
    • Microsoft Windows 95
  • Microsoft Visual Basic 5.0 Enterprise Edition?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows NT 4.0
    • Microsoft Windows 95
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows NT 4.0
    • Microsoft Windows 95
  • Microsoft Office 97 Professional Edition?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows NT 4.0
    • Microsoft Windows 95
키워드:?
kbnosurvey kbarchive kbmt kbdatabase kbhowto KB180368 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com