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