正文

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

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

分享到:

如有错误或你有更好的方法,请说出,大家一起讨论,呵呵。。。。 首先创建保存图片的SQL数据库,如下: 表明为image. 注意descrition的长度最好定义长一点,因为他是保存路径,不过这个字段也可以删掉不要(不会影响效果),不过要改下程序。呵呵。 代码: 连接数据库的代码偶就不写了。呵呵。 代码中有注释 初始界面如下: Private Sub cboId_Click()   ' 点击下拉框选择时从数据库提取图片    Call getImageEnd 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()    EndEnd Sub Private Sub cmdSave_Click()     ' 保存图片到SQLOn 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的图片。偶就不演示了。呵呵。  

阅读(5910) | 评论(1)


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

评论

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