在vb中,如何将一个XML文件通过ADO保存到access数据库的大字段,请指教,在线等,多谢您

解决方案 »

  1.   

    用AppenChunk方法实现adoRec("RepFace").AppendChunk
      

  2.   

    将XML文件赋值给String变量,然后用RecorderSet对象的AppendChunk方法来实现adoRec("RepFace").AppendChunk strXML
      

  3.   

    其中"RepFace"是对应需绑定XML数据字段名称,你的Connection对象及Recordset对象都设置好了吧?
      

  4.   

    http://expert.csdn.net/Expert/topic/2764/2764712.xml?temp=.7337763
      

  5.   

    http://expert.csdn.net/Expert/topic/2764/2764712.xml?temp=.7337763
      

  6.   

    一般文本型的数据插入数据库时,可以用直接赋值的方法如:adoRec("Field1")="Test",或是书写Insert语句如:Insert Table1 (Field1,Field2) values (Value1,Value2)的方法但对于大容量的数据而言,绑定时需用AppendChunk的方法,取出时需用GetChunk的方法来实现
      

  7.   

    '/以流放问数据库中的二进制字段时的读/写标志
    Public Enum SmRsType
           RsWrite = 1
           RsRead = 2
    End Enum'
    '读写二进制数据(流)
    '函数名:AdoStream
    '参数:  M_Conn ADODB连接,TabName 目标数据表,FldName 目标字段,WhereStr 更新条件,
    '       FileName 源文件名或由流生成的文件名,RsStyle 记录集的操作类型.W:File to Recode,R:Recode to File
    '返回值:
    '例:    CALL  AdoStream(P_Cnn,"AchGoods","GdsPhoto","Where gdsid='001'","C:\Tmp.Bmp","W")Public Function AdoStream(M_Conn As ADODB.Connection, _
                              TabName As String, _
                              FldName As String, _
                              Optional WhereStr As String = "", _
                              Optional Filename As String, _
                              Optional RsStyle As SmRsType = RsWrite) As String
        
        Dim StrSql As String
        Dim TmpFileName As String
        Dim Rs As New ADODB.Recordset
        Dim AdoSem As New ADODB.Stream
        Dim ReturnVal As String
        Dim WorkPath As String
        Dim RsType  As Long
        Dim RsStyleStr As String
        
        On Error Resume Next
        
        WorkPath = App.Path
        If Right$(WorkPath, 1) <> "\" Then WorkPath = WorkPath & "\"
        ReturnVal = ""
        AdoSem.Type = adTypeBinary    '流数据类型
        AdoSem.Open                  '打开流
    '/-----------------------------------------------------------
        '将流写入记录集
        RsType = RsStyle
        RsStyleStr = Choose(RsType, "W", "R")
        If RsStyleStr = "W" Then
            If Left$(Trim$(UCase$(WhereStr)), Len("where")) <> UCase$("where") Then WhereStr = " Where " & Trim$(WhereStr)
            StrSql = "Select Top 1 [" & TabName & "].[" & FldName & "] From [" & TabName & "] " & WhereStr
            Set Rs = RsOpen(M_Conn, StrSql, False)  '连接式记录集
            If Not (Rs.EOF And Rs.BOF) Then
                Rs.MoveFirst
                AdoSem.LoadFromFile Filename            '将文件LOAD到流
                DoEvents
                Rs.Fields(FldName).AppendChunk AdoSem.Read
                Rs.Update
            End If
            AdoStream = ""
        ElseIf RsStyle = "R" Then
            '/将流从记录集中取出
            If Len(Trim$(Filename)) = 0 Then Filename = "TmpFile.Bmp"
            If Len(Trim$(Dir$(TmpFileName, vbNormal + vbHidden))) > 0 Then Kill Filename
            If Left$(Trim$(UCase$(WhereStr)), Len("where")) <> UCase$("where") Then WhereStr = " Where " & Trim$(WhereStr)
            
            StrSql = "Select Top 1 [" & TabName & "].[" & FldName & "] From [" & TabName & "] " & WhereStr
            Set Rs = RsOpen(M_Conn, StrSql)
            If Not (Rs.EOF And Rs.BOF) Then
                Rs.MoveFirst
                If Not (IsNull(Rs.Fields(FldName))) Then
                    TmpFileName = WorkPath & Filename
                    AdoSem.Write Rs.Fields(FldName).GetChunk(Rs.Fields(FldName).ActualSize)
                    DoEvents
                    AdoSem.SaveToFile TmpFileName, IIf(Len(Trim$(Dir$(TmpFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
                    AdoStream = TmpFileName
                Else
                    AdoStream = ""
                End If
            Else
                AdoStream = ""
            End If
        End If
        AdoSem.Close: Set AdoSem = Nothing
        Rs.Close: Set Rs = Nothing
        Err.Clear
    End Function
      

  8.   

    Sorry,刚才写错了一点,绑定语句的写法应该是:adoRec("RepFace").AppendChunk CVar(ReportFace)其中ReportFace为String类型的XML文件流
      

  9.   

    Private Sub save_Click()
      AdoRest.AddNew
      AdoRest("name").Value = Names.Text
      AdoRest("id").Value = Numb.Text
      Set AdoFld = AdoRest("picture")//这句话有什么问题吗,adorest("picture"),picture是字段名称为什么总是:项目在所需的名称或序数中未被发现
      Call saveToDb(AdoFld, FileName)
      AdoRest.update
    End Sub