分享

VB6 保存和读取图片到数据库

 网络摘记 2014-04-14

dim stm as ADODB.Stream

dim rs as ADODB.Recordset

sub SavePictureToDB(cn   As   ADODB.Connection)  
  '将图片存入数据库  
  On   Error   GoTo   EH  
          Set   stm   =   New   ADODB.Stream  
          rs.Open   "select   ImagePath,ImageValue   from   tbl_Image",   cn,   adOpenKeyset,   adLockOptimistic  
          CommonDialog1.ShowOpen  
          Text1.Text   =   CommonDialog1.FileName  
           
          With   stm  
                    .Type   =   adTypeBinary  
                    .Open  
                    .LoadFromFile   CommonDialog1.FileName  
          End   With  
          With   rs  
                    .AddNew  
                    .Fields("ImagePath")   =   Text1.Text  
                    .Fields("ImageValue")   =   stm.Read  
                    .Update  
          End   With  
          rs.Close  
          Set   rs   =   Nothing  
  Exit   Sub  
  EH:   MsgBox   Err.Description,   vbInformation,   "Error"  
  End   Sub  
   
   
Sub   LoadPictureFromDB(cn   As   ADODB.Connection)  
  '载数据库中读出图片  
  On   Error   GoTo   EH  
          Dim   strTemp   As   String  
          Set   stm   =   New   ADODB.Stream  
          strTemp   =   "c:/temp.tmp"   '临时文件,用来保存读出的图片  
          rs.Open   "select   ImagePath,ImageValue     from   tbl_image",   cn,   ,   ,   adCmdText  
          With   stm  
                  .Type   =   adTypeBinary  
                  .Open  
                  .Write   rs("ImageValue")  
                  .SaveToFile   strTemp,   adSaveCreateOverWrite  
                  .Close  
          End   With  
          Image1.Picture   =   LoadPicture(strTemp)  
          Set   stm   =   Nothing  
          rs.Close  
          Set   rs   =   Nothing  
  Exit   Sub  
  EH:   MsgBox   Err.Description,   vbInformation,   "Error"  
  End   Sub 

也可用FileSystemObject的方式来保存

Dim Sql As String
Dim fs As New FileSystemObject

Sub SavePicture()
    Dim sByte() As Byte
    Dim bIsNull As Boolean
   
    If fs.FileExists(g_FilePath) Then
        Open g_FilePath For Binary Access Read As #1
        ReDim sByte(1 To LOF(1))
        Get #1, 1, sByte()
        Close #1
        bIsNull = False
    Else
        bIsNull = True
    End If
   
    Dim rs As New ADODB.Recordset
    rs.Open "select empid,empname,pic from emp where empid = '" & Trim(txtEmpId.Text) & "'", cn, adOpenStatic, adLockOptimistic
    rs.AddNew
    rs!EmpId = txtEmpId.Text
    rs!EmpName = txtEmpName.Text
    If bIsNull <> True Then
        rs!pic = sByte
    End If
    rs.Update
    MsgBox "save data ok!"
    txtEmpId.Text = ""
    txtEmpName.Text = ""
    Set picView.Picture = Nothing
    cmdAdd.Enabled = True
End Sub

Sub viewJpg()


    Dim TmpFile As String
    Dim jByte() As Byte

    Sql = "select * from emp"
    Set rsViewJpg = New ADODB.Recordset
    rsViewJpg.Open Sql, cn, adOpenStatic, adLockOptimistic
    rsViewJpg.MoveFirst


    If Not rsViewJpg.BOF Then
        If Not rsViewJpg.EOF Then
            txtEmpId.Text = rsViewJpg!EmpId
            txtEmpName.Text = rsViewJpg!EmpName
            Set pic.Picture = Nothing
            If Not fs.FolderExists(App.Path + "/temp") Then
                fs.CreateFolder (App.Path + "/temp")
            End If
            TmpFile = App.Path + "/Temp/" + rsViewJpg.Fields(0) + ".jpg"
            If Not IsNull(rsViewJpg!pic) Then
                jByte = rsViewJpg!pic
                Open TmpFile For Binary Access Write As #1
                Put #1, , jByte
                Close #1
                pic.Picture = LoadPicture(TmpFile)
            End If
        End If
    End If
End Sub


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多