如有错误或你有更好的方法,请说出,大家一起讨论,呵呵。。。。 首先创建保存图片的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的图片。偶就不演示了。呵呵。

评论