怎样把图片存入sql server数据库,在vb中怎样显示出图片? 请高手赐教!!

解决方案 »

  1.   

    1. 将以 .gif 文件格式存储的图像传输到 SQL Server 表的 Image 列 
    该示例代码将通过覆盖 pub_info 表的当前内容,将一个以 .gif 文件格式存储的图像保存到该表的第一条记录中,如下所示: 
    新建一个标准 EXE Visual Basic 工程。 
    在工程菜单上,单击选择引用,然后设置一个到 Microsoft ActiveX Data Objects 2.5 Object Library 的引用。 
    将 CommandButton 按钮放在 Form1 上。 
    在该窗体的常规声明段中作如下声明: Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim mstream As ADODB.Stream
    将下面的代码剪切并粘贴到添加到该窗体的 CommandButton 所对应的 Click 事件中: Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>;
    Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"Set rs = New ADODB.Recordset
    rs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimisticSet mstream = New ADODB.Stream
    mstream.Type = adTypeBinary
    mstream.Open
    mstream.LoadFromFile "<path to .gif file>"
    rs.Fields("logo").Value = mstream.Read
    rs.Updaters.Close
    cn.Close
    保存并运行该 Visual Basic 工程。 
    单击 CommandButton 运行该代码,即可将 .gif 文件的内容以数据流的方式传输到 ADO Stream 对象中,并将 Stream 中的数据保存到记录集内第一条记录的 logo 列。 
    请使用示例 1 中的代码,确认 logo 列中的图像已被修改。 
    2 在form上加image和adodc控件,之后image 邦定adodc
      

  2.   

    '将图片保存到数据库
    '******************将图片文件保存到数据库中*************************
    Sub savePicToDB(cn As ADODB.Connection)
        Dim stm As ADODB.Stream
        Set stm = New ADODB.Stream
        Set rs1 = New ADODB.Recordset
        rs1.Open "select * from rs_http", cn1, adOpenKeyset, adLockOptimistic
        With stm
            .Type = adTypeBinary
            .Open
            .LoadFromFile dlg.FileName
        End With
    With rs1
         .AddNew
         .Fields("tp") = stm.Read
         .Update
    End With
    rs1.Close
    Set rs1 = Nothing
    End Sub'将图片或者文件从数据库中读出
    Sub GetPicFromDB(cn As ADODB.Connection)
        On Error Resume Next
        Dim fld As Field
        Dim strTemp As String
        Dim stm As ADODB.Stream
        Set stm = New ADODB.Stream
                                          'strTemp = "c:\temp.bmp"
        Set rs1 = New ADODB.Recordset
        rs1.Open "select * from rs_http where htbh='" & frm_manage.Grid2.TextMatrix(frm_manage.Grid2.RowSel, 0) & "'", cn, , , adCmdText
            While Not rs1.EOF
                 '*********将数据库中的文件读到硬盘上*************************
               ' strTemp = App.Path + "\temp\" + rs1!Name '`临时文件,用来保存读出的图片            With stm
                     .Type = adTypeBinary
                     .Open
                     .Write rs1("tp").value
                     strTemp = App.Path & "\temp1\" & rs1!Name
                     .SaveToFile strTemp, adSaveCreateOverWrite
                     .Close
                End With
                Set itemX = lvwPic.ListItems.Add(, App.Path & "\temp1\" & rs1!Name, rs1!Name, 1, 1)
                itemX.SubItems(1) = rs1!bz
                rs1.MoveNext
            Wend
        Set stm = Nothing
        rs1.Close
        Set rs1 = Nothing
        End Sub
      

  3.   

    网上的很多,可以找,wingchi(一颗红心,两手准备)的方法也不错。
      

  4.   

    有没有办法不用生成临时文件显示数据库里边图片数据的方法?
    我在创智niit教材上看到用LoadPicture(rs.Fields("logo"))这样取数据集里边的数据显示的方法.但是自己写出来后不能显示.绑定倒是可以,但是这样做可不好,各位还有什么好办法没有?
      

  5.   

    那如果图片在image里,该怎样做?
      

  6.   

    to mmtzwyd(焰飞):
        可以的,设置image的datasource 和datafield
      

  7.   

    读出image内容
    If Not IsNull(G_Rs.Fields("bmp")) Then
                Set adoStream = New ADODB.Stream
                adoStream.Type = adTypeBinary
                adoStream.Open
                adoStream.Write G_Rs.Fields("bmp").GetChunk(G_Rs.Fields("bmp").ActualSize)
                TmpFile = App.Path + "\Temp\Zp.tmp"
                adoStream.SaveToFile TmpFile, IIf(Len(Trim(Dir(TmpFile, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
                imgPic.Picture = LoadPicture(TmpFile)
                adoStream.Close
                Set adoStream = Nothing
            End If
    读入数据库
    Dim adoStream As ADODB.Stream
            If PicPath <> "" Then
                Set adoStream = New ADODB.Stream
                adoStream.Type = adTypeBinary
                adoStream.Open
                adoStream.LoadFromFile PicPath
                G_Rs.Fields("bmp").AppendChunk adoStream.Read
            End If
      

  8.   

    http://support.microsoft.com/default.aspx?scid=kb;EN-US;258038
    http://expert.csdn.net/Expert/topic/2315/2315286.xml?temp=.2765619