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

    技术2022-05-11  77

    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 StringDim 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 = TrueEnd 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 IfEnd Sub


    最新回复(0)