如何用VB在SQL中存储图片?

解决方案 »

  1.   

    sql中可使用image数据类型存储图片,以下是操作图片(二进制)字段的代码:
    '存储照片文件到数据库
    Public Function WriteToDB(ByRef col As ADODB.Field, ByVal FileName As String) As Boolean
    On Error GoTo ErrMsg
        Dim mStream As ADODB.Stream
        Set mStream = New ADODB.Stream
        
        WriteToDB = False
        mStream.Type = adTypeBinary
        mStream.Open
        mStream.LoadFromFile FileName
        col.Value = mStream.Read
        
        mStream.Close
        Set mStream = Nothing
        WriteToDB = True
        Exit Function
    ErrMsg:
        MsgBox "存储照片到数据库时出现错误." & vbCrLf & Err.Description, vbExclamation + vbOKOnly, "提示"
    End Function'设置临时照片文件
    Public Function ReadDB(col As ADODB.Field, ByRef imgFile As String) As Boolean
    On Error GoTo ErrRead
        Dim mStream As New ADODB.Stream
        ReadDB = False
        
        If col.ActualSize < 200 Then Exit Function
        
        mStream.Type = adTypeBinary
        mStream.Open
        mStream.Write col.Value
        mStream.SaveToFile imgFile, adSaveCreateOverWrite
        ReadDB = True
        Exit Function
    ErrRead:
         MsgBox "设置临时照片文件时出现错误:" & vbCrLf & Err.Description, vbInformation, "提示"
         ReadDB = False
    End Function
      

  2.   

    WriteToDB的使用方法,首先用insert into在表里面添加一条记录,该记录的ole字段设为null,之后提取该记录并调用WriteToDB函数更新ole字段。一下是后一步的示例:
        '
        '
        把图片写入到数据库
        strSQL = "select * from " & strTable _
                & " where BBID='" & strBBID & "'" _
                & " and ReportIndex=" & objControl.Index _
                & " and ReportType=" & WPhoto
        Set rsTemp = New ADODB.Recordset
        rsTemp.Open strSQL, GCon, adOpenDynamic, adLockOptimistic
        WriteToDB rsTemp("ReportPhoto"), mstrTempFile
        rsTemp.Update
        rsTemp.Close