请问怎么才能把图片信息记录在数据库里。然后在VB里读取数据库里的图片显示出来。

解决方案 »

  1.   

    '保存图片
    Public Sub WritePic(isql As String, picstr As String, ifield As String)
    'isql:sql语句 picstr:写入图片路径(如c:\1.bmp)  ifield :图像字段名
        Dim Stm As ADODB.Stream
        Dim Rs As ADODB.Recordset
        Set Stm = New ADODB.Stream
        With Stm
            .Type = adTypeBinary 
            .Open
            .LoadFromFile picstr
        End With
        Set Rs = New ADODB.Recordset
        With Rs
            .Open isql, cn, adOpenKeyset, adLockOptimistic 'cn为数据源
            .Fields(ifield) = Stm.Read
            .Update
        End With
        Rs.Close
        Stm.Close
        Set Stm = Nothing
        Set Rs = noting
    End Sub
    '读取图片
    Public Sub ReadPic(isql As String, picstr As String, ifield As String)
        Dim Stm As ADODB.Stream
        Dim Rs As ADODB.Recordset
        Set Rs = New ADODB.Recordset
        Rs.Open isql, cn, adOpenKeyset, adLockReadOnly
        
        Set Stm = New ADODB.Stream
        With Stm
            .mode = adModeReadWrite
            .Type = adTypeBinary
            .Open
            .Write Rs(ifield)
            .SaveToFile picstr
        End With
        Rs.Close
        Stm.Close
        Set Rs = Nothing
        Set Stm = Nothing
    End Sub
      

  2.   

    http://www.vb-helper.com/HowTo/datarpt.zip
      

  3.   

    daisy8675(莫依) ( ) 信誉:136 
    你这给的是什么啊?晕了
      

  4.   

    我看你们可能不太明我的意思是什么。。我是说。比如有一张图片叫1.jpg 然后我把1.jpg直接保存在数据库里,而不是把1.jpg的信息(路径,文件名等之类的信息。。)我是想利用access里边有个字段叫OLE对象保存图片,然后我在VB里是应该用什么控件直接打开数据库里的那张图片。
      

  5.   

    http://office.9zp.com/dispbbs.asp?boardID=7&ID=2078
      

  6.   

    回Maxwujunmeng(吴先生)
    这个具体过程怎么个解法?~!
    一般其他程序员会用什么方法解决的?
      

  7.   

    hhjjhjhj(大头)(想变胡萝卜^^) 
    下不了啊
      

  8.   

    Dim cnnImage As New ADODB.Connection
    Dim rsImage As New ADODB.Recordset
    Dim strSql As StringDim Chunk() As Byte
    Dim lngLengh As Long
    Dim intChunks As Integer
    Dim intFragment As Integer
    Const ChunkSize = 1000
    Const lngDataFile = 1
    Private Sub cmdBrowse_Click()
        '选择 JPG OR Bmp 文件
        On Error Resume Next
        With cmdlFilePath
            .Filter = "JPG Files|*.JPG|Bitmaps|*.BMP|*.doc|*.*"
            .ShowOpen
            txtFilePath.Text = .FileName
        End With
    End Sub
    Private Sub cmdExit_Click()
         End
    End Sub
    Private Sub cmdLast_Click()
        On Error Resume Next
        rsImage.MoveLast
        Call ShowPic
    End Sub
    Private Sub cmdNext_Click()
        On Error Resume Next
        rsImage.MoveNext
        Call ShowPic
    End Sub
    Private Sub cmdPrev_Click()
        On Error Resume Next
        rsImage.MovePrevious
        Call ShowPic
    End Sub
    Private Sub cmdSave_Click()
        '保存文件到数据库中
        If Trim(txtFilePath.Text) = "" Then
            MsgBox "未选择文件.!!", vbInformation + vbSystemModal, "保存出错"
            Exit Sub
        End If
        If (Dir(Trim(txtFilePath.Text)) = "") Then Exit Sub
        '以二进制方式打开文件
        Open Trim(txtFilePath.Text) For Binary Access Read As lngDataFile
        lngLengh = LOF(lngDataFile)    ' 文件大小
        If lngLengh = 0 Then Close lngDataFile: Exit Sub
        intChunks = lngLengh \ ChunkSize
        intFragment = lngLengh Mod ChunkSize
        '新建记录
        rsImage.AddNew
        MsgBox rsImage.RecordCount
            ReDim Chunk(intFragment)
            Get lngDataFile, , Chunk()
            rsImage!picImage.AppendChunk Chunk()
            ReDim Chunk(ChunkSize)
            For I = 1 To intChunks
                Get lngDataFile, , Chunk()
                rsImage!picImage.AppendChunk Chunk()
            Next I
        rsImage.Update
        Close lngDataFile
        Call ShowPic
    End Sub
    Private Sub cmdFirst_Click()
        On Error Resume Next
        rsImage.MoveFirst
        Call ShowPic
    End Sub
    Private Sub Form_Load()
        rsImage.LockType = adLockOptimistic
        rsImage.CursorType = adOpenKeyset
        cnnImage.Provider = "Microsoft.Jet.OLEDB.4.0"
        strSql = App.Path & "\Image.mdb"
        cnnImage.Open strSql
        strSql = "Select * From ImageStore"
        rsImage.Open strSql, cnnImage
        If (rsImage.BOF = True) And (rsImage.EOF = True) Then Exit Sub
        Call cmdFirst_Click
    End Sub
    Public Sub ShowPic()
        On Error Resume Next
        Open "pictemp" For Binary Access Write As lngDataFile
            lngLengh = rsImage!picImage.ActualSize
            intChunks = lngLengh \ ChunkSize
            intFragment = lngLengh Mod ChunkSize
            ReDim Chunk(intFragment)
            Chunk() = rsImage!picImage.GetChunk(intFragment)
            Put lngDataFile, , Chunk()
            For I = 1 To intChunks
               ReDim Buffer(ChunkSize)
               Chunk() = rsImage!picImage.GetChunk(ChunkSize)
               '建立图片临时文件
               Put lngDataFile, , Chunk()
            Next I
        Close lngDataFile
        FileName = "pictemp"
        'Picture1.Picture = LoadPicture(FileName)
        RichTextBox1.LoadFile FileName
    End Sub
      

  9.   

    如果用控件来做,记得是在窗体上放个ole控件,object type不管,datasourec绑定到数据控件,datafield等于ole字段。