使用vb6从sql server 2012存储和检索图像

时间:2013-07-01 05:21:06

标签: image vb6

我想开发一个解决方案,在用户点击加载后将用户pic插入数据库。然后单击视图将显示存储在uid标识的用户的DB中的用户pic。

模块代码: http://pastebin.com/CTW3e0ez

表格代码: http://pastebin.com/W0CNUuJ1

问题是由于存在

rs.AddNew
rs.Fields("ID").Value = ID
rs.Fields("Description").Value = Description
rs.Fields("Picture").Value = strStream.Read
rs.Update

我不能将SQL 插入 where 子句一起使用。

我的主要目的是允许用户更改他的个人资料图片。选择文件后,它将存储在数据库中,并显示在图标框中。

1 个答案:

答案 0 :(得分:0)

你应该能够使用带有匿名参数的Command对象来完成这项工作,正如这个简单的开放例程中所定义的那样:

Public Sub OpenDB()
    Set conDB = New ADODB.Connection
    conDB.Open strConn

    Set cmndUpdate = New ADODB.Command
    With cmndUpdate
        .Name = "Update"
        .CommandType = adCmdText
        .CommandText = "UPDATE [PicTable] " _
                     & "SET [Picture] = ? " _
                     & "WHERE [ID] = ?"
        Set .ActiveConnection = conDB
    End With
End Sub

稍后可以将其作为Connection的动态方法调用,如:

Private Sub cmdReplace_Click()
    'We have an open Recordset (RS) to get the ID from.  We use the
    'current record's ID and update that record with a fixed photo
    'file "photo 04.jpg" just for demonstration:
    Dim PictureFileName As String
    Dim PictureFile As Integer
    Dim PictureBlob() As Byte

    PictureFile = FreeFile(0)
    Open "photos\photo 04.jpg" For Binary Access Read As #PictureFile
    ReDim PictureBlob(LOF(PictureFile) - 1)
    Get #PictureFile, , PictureBlob
    Close #PictureFile

    conDB.Update PictureBlob, RS!ID.Value

    'Repaint our user interface by calling our ShowData subroutine,
    'which displays data from the current record of RS:
    ShowData
End Sub

我使用Jet MDB进行了快速而肮脏的测试,但是我没有理由认为这不适用于大多数旧版6.5左右的SQL Server版本。由于它不使用命名参数,因此它甚至可以与SQL Server Compact Edition一起使用。

有关更完整,可测试的示例,请参阅SQL Parameters Example