正文

[VB]在VB中调用保存在SQL的图片2006-05-18 17:22:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/fengfei/14304.html

分享到:

如有错误或你有更好的方法,请说出,大家一起讨论,呵呵。。。。

首先创建保存图片的SQL数据库,如下:


表明为image. 注意descrition的长度最好定义长一点,因为他是保存路径,不过这个字段也可以删掉不要(不会影响效果),不过要改下程序。呵呵。

代码: 连接数据库的代码偶就不写了。呵呵。 代码中有注释

初始界面如下:


Private Sub cboId_Click()   ' 点击下拉框选择时从数据库提取图片
    Call getImage
End Sub

Private Sub cmdChoose_Click()
    dlgMain.Filter = "JPEG(*.jpg)|*.jpg|位图(*.bmp)|*.bmp|GIT(*.gif)|*.gif|所有文件|*.*"    ' 设定打开文件类型
    dlgMain.FilterIndex = 4
    dlgMain.ShowOpen
   
    txtPath.Text = dlgMain.FileName     ' 获得路径
   
    If txtPath.Text = Empty Then
        MsgBox "请选择路径"
        cmdSave.Value = False
        Exit Sub
    Else
        imgShow.Picture = LoadPicture(txtPath.Text)     ' 按路径加载图片
        cmdSave.Visible = True
    End If
       
End Sub


Private Sub cmdExit_Click()
    End
End Sub

Private Sub cmdSave_Click()     ' 保存图片到SQL
On Error GoTo SaveErr
    Dim lngFile As Long
    Dim lngCh As Long
    Dim rgbArray() As Byte  ' 用来存储图片的二进制代码
    Dim str As String
   
    lngFile = FileLen(txtPath.Text)     ' 获得图片大小
    ReDim rgbArray(lngFile)             ' 动态分配内存,用来存储图片
   
    lngCh = FreeFile
   
    Open txtPath.Text For Binary As #lngCh
   
    Get #lngCh, , rgbArray      ' 获得图片的二进制代码
   
    Close #lngCh
   
    str = "select * from image where id = " & cboId.Text
    Set Rs = New ADODB.Recordset
    Rs.Open str, Conn, adOpenStatic, adLockOptimistic, -1
   
    If Rs.BOF = False Then
            Rs.Fields(0) = cboId.Text       ' 存储图片ID
            Rs.Fields(1).Value = rgbArray   ' 存储图片二进制代码
            Rs.Fields(2).Value = txtPath.Text   ' 存储图片路径
            Rs.Fields(3).Value = Dir(txtPath.Text, vbNormal + vbReadOnly)   ' 获得图片名,不是路径
            Rs.Update
    Else
            Rs.AddNew
   
            Rs.Fields(0) = cboId.Text
            Rs.Fields(1).Value = rgbArray
            Rs.Fields(2).Value = txtPath.Text
            Rs.Fields(3).Value = Dir(txtPath.Text, vbNormal + vbReadOnly)
            Rs.Update
   
    End If
   
    Rs.Close
    txtPath.Text = Empty
   
    Exit Sub
   
SaveErr:
    MsgBox Err.Number & Err.Description
   
End Sub


Private Sub Form_Load()
    cmdSave.Visible = False
    cboId.AddItem 1
    cboId.AddItem 2
    cboId.AddItem 3
    cboId.AddItem 4
    cboId.AddItem 5
    cboId.AddItem 6
    cboId.AddItem 7
    cboId.AddItem 8
    cboId.AddItem 9
    cboId.AddItem 10
    
    cboId.ListIndex = 0
   
   
End Sub

Public Function getImage() As Boolean       ' 判断点击列表框时该id是否存有图片,有显示,无则不显示
On Error GoTo getErr
    If RunSQL("Select * from image where id = " & cboId.Text) = False Then  ' 当没有图片时则退出
        imgShow.Picture = LoadPicture("")
        Exit Function
    End If
   
    Dim rgbArray() As Byte
    Dim lngCh As Long
    Dim str As String
   
    lngCh = FreeFile
    Open App.Path & "/" & Rs.Fields(3) For Binary As #lngCh     ' 打开一个路径,用来保存从SQL得到的图片
   
    ReDim rgbArray(Rs.Fields(1).ActualSize)     ' 动态分配内存,用来存储从SQL中得来的图片
   
    rgbArray = Rs.Fields(1).Value       ' 获得SQL中的图片
   
    Put #lngCh, , rgbArray      ' 创建从SQL中得来的图片
   
    imgShow.Picture = LoadPicture(App.Path & "/" & Rs.Fields(3))    ' 显示图片
   
    Close #lngCh
   
    getImage = True
    Exit Function
   
getErr:
    MsgBox Err.Number & Err.Description
    getImage = False

End Function

演示:当我点击下拉框选择时,如果该选项有图片则显示图片,无则不显示图片。


此时选项2无图片,则可以按“选择文件”选择图片,再按“保存到数据库”按钮将图片以下拉框的值为ID保存到SQL数据库。 如下:


现在,如果下拉框选择3时,由于3没有保存图片,则不会显示图片。再选2时,由于刚才保存了图片到数据库,所以就会显示刚才的图片。 也可以更换图片,既更换2的图片。偶就不演示了。呵呵。

 

阅读(5785) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册