วิธีการเรียก และปรับปรุงฟิลด์ข้อความเซิร์ฟเวอร์ SQL ใช้ ADO

ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ

180368
บทความนี้ถูกเก็บถาวรแล้วเนื้อหาของบทความจึงถูกนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก
สรุป
บทความนี้อธิบายเกี่ยวกับวิธีการเข้าถึง และการปรับปรุงเขตข้อมูลข้อความขนาดใหญ่Blob (binary ขนาดใหญ่วัตถุ/ทั้ง) โดยใช้ ActiveX Data Objects (ADO) นี้ได้โดยใช้การGetChunkและAppendChunkวิธีการนำเสนอภาพวัตถุในฟิลด์ของชุดระเบียน ADODB
ข้อมูลเพิ่มเติม

โครงการตัวอย่างทีละขั้น

  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ควบคุม และตั้งค่าของชื่อคุณสมบัติเป็น "rtbText"
    2. เพิ่มคำCommandButtonควบคุม และตั้งค่าของชื่อคุณสมบัติเป็น "cmdPrev" และการคำอธิบายเฉพาะคุณสมบัติการ "เปรียบ"
    3. เพิ่มคำCommandButtonควบคุม และตั้งค่าของชื่อคุณสมบัติเป็น "cmdNext" และการคำอธิบายเฉพาะคุณสมบัติการ "ถัดไป"
    4. เพิ่มคำCommandButtonควบคุม และตั้งค่าของชื่อคุณสมบัติเป็น "cmdSave" และการคำอธิบายเฉพาะคุณสมบัติการ "ปรับปรุง"
  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 ชื่อเซิร์ฟเวอร์ของคุณ
  7. เรียกใช้โครงการตัวอย่าง ที่RichTextBoxจะประกอบด้วยระเบียนแรกของชุดระเบียน
  8. คลิกถัดไป. สังเกตว่า เนื้อหาของการRichTextBoxเปลี่ยนแปลงไปยังระเบียนถัดไปจนกระทั่งพบระเบียนสุดท้ายที่ถัดไปปุ่มเรียกของชุดระเบียนMoveNextวิธีการ และจากนั้นเรียกใช้ColumnToFileและFileToFormวิธีการ
  9. คลิกก่อนหน้า. สังเกตว่า เนื้อหาของการRichTextBoxการเปลี่ยนแปลงระเบียนก่อนหน้าจนกระทั่งพบครั้งแรกระเบียน ที่ก่อนหน้าปุ่มเรียกของชุดระเบียนMovePreviousวิธีการ และจากนั้นเรียกใช้ColumnToFileและFileToFormวิธีการ
  10. พิมพ์บางสิ่งใหม่ในกล่องข้อความ และคลิ กการปรับปรุงเมื่อต้องการปรับเปลี่ยนเขตข้อมูลข้อความในสิ่ง บันทึกคุณไม่ ที่การปรับปรุงปุ่มโทรศัพท์FormToFileและFileToColumnวิธีการ เปิดใดในการเรียกของชุดระเบียนการปรับปรุงวิธีการ ข้อมูลใหม่ควรได้รับการปรับปรุงในฐานข้อมูล
กลุ่ม BLOB เชื่อม

คำเตือน: บทความนี้ได้รับการแปลโดยอัตโนมัติ

คุณสมบัติ

รหัสบทความ: 180368 - การตรวจสอบครั้งสุดท้าย: 02/22/2014 09:26:23 - ฉบับแก้ไข: 5.0

  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Office 97 Professional Edition
  • kbnosurvey kbarchive kbdatabase kbhowto kbmt KB180368 KbMtth
คำติชม