在下按照kevincomein(白菜)的建议,我将一个jpg文件存到Sql里了。但有一个问题是:
1。我不知道是否已经将图片存到我指定的行里(因为是人事管理系统,可能会更新员工照片)。
2。我如何有选择的将指定的图片显示在VB的picturebox里(在查询功能中使用)。如蒙赐教,不胜感激!!
我的QQ号:264188923。欢迎大家与我联系。

解决方案 »

  1.   

    我在是用下面代码做的,不知道是否正确。
    ‘-------------------------------
    Dim rs As ADODB.Recordset
    Dim SQLstr As StringDim msteam As ADODB.StreamSet rs = New ADODB.Recordset
    Set msteam = New ADODB.Streammsteam.Type = adTypeBinarymsteam.Openmsteam.LoadFromFile (PicPath)
    SQLstr = "select pic from Table_picture where idid=1"rs.Open SQLstr, cn, adOpenDynamic, adLockBatchOptimistic
    rs.Fields("pic").Value = msteam.Readrs.Update
      

  2.   

    读取的
    Private Sub ReadFromDB(RY As String)
    Dim Rst As New ADODB.Recordset
    Dim Mstream As ADODB.Stream
    Dim SQL As StringOn Error Resume Next
    SQL = "select * from ry_manage where rybh='" & RY & "'"
    Set Rst = New ADODB.Recordset
    Rst.CursorLocation = adUseClient
    Rst.Open SQL, Conn, adOpenStatic, adLockReadOnly, adCmdTextIf IsNull(Rst.Fields("pic")) Then img.Picture = LoadPicture(): Exit SubIf Rst.RecordCount = 0 Then
       ShowMsg 1, "  数据库出错,请与系统管理员联系!"
       Rst.Close
       Set Rst = Nothing
       Exit Sub
    End IfSet Mstream = New ADODB.Stream
    Mstream.Type = adTypeBinary
    Mstream.Open
    Mstream.Write Rst.Fields("pic").Value
    Mstream.SaveToFile App.Path & "\tmpImage.gif", adSaveCreateOverWrite
    Mstream.Close
    Set Mstream = Nothing
    img.Picture = LoadPicture(App.Path & "\tmpImage.gif")End Sub保存的
    Private Sub SaveToDB(RY As String)
    Dim Rst As New ADODB.Recordset
    Dim Mstream As New ADODB.Stream
    Dim SQL As String
    Dim MediaName As StringMediaName = Trim$(PicFileName)
    Set Rst = New ADODB.Recordset
    Rst.CursorLocation = adUseClient
    SQL = "select * from ry_manage where rybh='" & RY & "'"
    Rst.Open SQL, Conn, adOpenStatic, adLockPessimistic, adCmdText  Set Mstream = New ADODB.Stream
      Mstream.Type = adTypeBinary
      Mstream.Open
      
      Mstream.LoadFromFile PicFileName
      Rst.Fields("Pic").Value = Mstream.Read
      Rst.UpdateRst.Close
    Set Rst = Nothing
    Set Mstream = NothingEnd Sub
      

  3.   

    给一个vb的例子给你
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim stm As ADODB.StreamPrivate Sub SavePictureToDB(cn As ADODB.Connection)
    '将BMP图片存入数据库
    On Error GoTo EH
        Set stm = New ADODB.Stream
        rs.Open "select ImagePath,ImageValue from tbl_Image", cn, adOpenKeyset, adLockOptimistic
        CommonDialog1.ShowOpen
        Text1.Text = CommonDialog1.FileName
        
        With stm
             .Type = adTypeBinary
             .Open
             .LoadFromFile CommonDialog1.FileName
        End With
        With rs
             .AddNew
             .Fields("ImagePath") = Text1.Text
             .Fields("ImageValue") = stm.Read
             .Update
        End With
        rs.Close
        Set rs = Nothing
    Exit Sub
    EH: MsgBox Err.Description, vbInformation, "Error"
    End Sub
    Private Sub LoadPictureFromDB(cn As ADODB.Connection)
    '载数据库中读出BMP图片
    On Error GoTo EH
        Dim strTemp As String
        Set stm = New ADODB.Stream
        strTemp = "c:\temp.tmp" '临时文件,用来保存读出的图片
        rs.Open "select ImagePath,ImageValue  from tbl_image", cn, , , adCmdText
        With stm
            .Type = adTypeBinary
            .Open
            .Write rs("ImageValue")
            .SaveToFile strTemp, adSaveCreateOverWrite
            .Close
        End With
        Image1.Picture = LoadPicture(strTemp)
        Set stm = Nothing
        rs.Close
        Set rs = Nothing
    Exit Sub
    EH: MsgBox Err.Description, vbInformation, "Error"
    End Sub
      

  4.   

    1 查询功能中可以使用 ITL15.dll 库直接解压缩Jpeg流显示
    2 图片和一个标识字段对应,将Ado中图片字段直接帮定到Picture或Image控件可直接显示Jpg或Bmp图片 不需要你再读取
      

  5.   

    微软的答案:
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;258038