我主要用了这个方法来把图片存入数据库
Public Sub SavePicToDb(ByRef fld As ADODB.Field, DiskFile As String)
'存取照片的   函数
    Dim mStream As ADODB.Stream
    
    Set mStream = New ADODB.Stream
    mStream.Type = adTypeBinary
    mStream.Open
    
    If DiskFile <> vbNullString Then
        mStream.LoadFromFile DiskFile
        fld = mStream.Read
    End If
    
    mStream.Close
    Set mStream = Nothing
End Sub读取用的是    Set ImgPic.DataSource = mrc
    ImgPic.DataField = "图片"删除我还不会
更新我也不会还有,比如我想批量录入一批学生的图片,图片的名字是以
学号命名的,如何实现批量录入啊???谢谢了,急用!!!

解决方案 »

  1.   

    Public Sub WriteDB(Col As ADODB.Field, ImgFile As String, Optional BLOCKSIZE As Long = 8192)
        Dim byteData() As Byte, FileLength As Long, NumBlocks As Integer
        Dim LeftOver As Long, SourceFileNum As Integer, i As Integer
        
          SourceFileNum = FreeFile '打开的文件号 你可以直接写 例如: 1
          Open ImgFile For Binary As #SourceFileNum 'ImgFile是图片所在目录
            FileLength = LOF(SourceFileNum)
            If FileLength > 50 Then
              NumBlocks = FileLength / BLOCKSIZE
              LeftOver = FileLength Mod BLOCKSIZE
              ReDim byteData(LeftOver)
              Get #SourceFileNum, , byteData()
              Col.AppendChunk byteData()
              ReDim byteData(BLOCKSIZE)
              For i = 1 To NumBlocks
                Get #SourceFileNum, , byteData()
                Col.AppendChunk byteData()
              Next
            End If
          Close #SourceFileNum
    End Sub
      

  2.   

    整条删除
    cn.execute "delete from employees where employeeid=1"
    删除图片:
    cn.execute "update employees set photos=null where employeeid=2"
    更新:
    cn.execute "update employees set name='yoki' where employeeid=3"
    批量录入:
    会录入一条了,批量还能不会么?价格循环就可以了
      

  3.   

    提供给你两个函数,分别是利用ChunkData对SQL Server进行读取的,参数包括一个field对象,即数据库中哪个字段是需要存贮ChunkData的,另外一个是保存的数据,以Byte数组提供。你可以继续在这两个函数的基础上编写从文件读取的程序。
    另外,往数据库写的函数本身可以是属于Transcation之内的。Public Function GetFileFromDB(dbField As ADODB.Field, vData As Variant, Optional ByVal SaveAs As String = "", Optional PackageSize As Long = 8192&)
        On Error GoTo errHandle
        
        Dim lngActualSize As Long, lngCurrentSize As Long
        Dim vTemp As Variant, bTemp() As Byte
        Dim hFile As Long
        
        lngActualSize = dbField.ActualSize
        lngCurrentSize = 0
        
        If lngActualSize <= 0 Then
            Err.Raise ERR_SIZE_EQU_OR_LESS_ZERO, "getFileFromDB"
        End If
        
        If Trim(SaveAs) = "" Then
            Do While lngCurrentSize < lngActualSize
                vTemp = dbField.GetChunk(PackageSize)
                vData = vData & vTemp
                lngCurrentSize = lngCurrentSize + PackageSize
            Loop
        Else
            hFile = FreeFile()
            Open SaveAs For Binary As hFile
            
            Do While lngCurrentSize < lngActualSize
                vTemp = dbField.GetChunk(PackageSize)
                
                bTemp = vTemp
                Put #hFile, , bTemp
                
                vData = vData & vTemp
                lngCurrentSize = lngCurrentSize + PackageSize
            Loop
            
            Close
        End If
        
        GetFileFromDB = 0
        
        Exit Function
    errHandle:
        GetFileFromDB = Err.Number
    End Function
    Public Function SaveFileToDB(ByVal Filename As String, dbField As ADODB.Field, Optional PackageSize As Long = 8192&) As Long
        On Error GoTo errHandle
        Dim lngActualSize As Long, lngCurrentSize As Long
        Dim vTemp As Variant, bTemp() As Byte
        Dim hFile As Long
        
        Dim i As Integer
        Dim lChunkCount As Long
        Dim lChunkRemainder As Long
        
        lngActualSize = FileLen(Filename)
        lngCurrentSize = 0
        
        If lngActualSize <= 0 Then
            Err.Raise ERR_SIZE_EQU_OR_LESS_ZERO, "writeFileToDB"
        End If
        
        '读取文件内容
        hFile = FreeFile()
        Open Filename For Binary As hFile
        ReDim bTemp(PackageSize) '临时存贮块
        lChunkCount = (LOF(hFile) - Seek(hFile) + 1) \ PackageSize    '取块数
        lChunkRemainder = (LOF(hFile) - Seek(hFile) + 1) Mod PackageSize '取整块后余下的数据
        
        For i = 1 To lChunkCount
            Get hFile, , bTemp '从文件中取出一块
            dbField.AppendChunk (bTemp)  '将块写入字段中
        Next
        
        If lChunkRemainder > 0 Then
            ReDim bTemp(PackageSize) '临时存贮块
            Get hFile, , bTemp   '取出该块
            dbField.AppendChunk (bTemp) '写入字段中
        End If
        Close
        
        'MsgBox dbField.ActualSize
        
        SaveFileToDB = 0
        
        Exit Function
    errHandle:
        SaveFileToDB = Err.Number
        
    End Function
      

  4.   

    解决没有?可mail to 2ego163.com
    我有ado 存取该图片的示例