接分 Dim iConcstr As String Dim iConc As ADODB.Connection Dim filename1 As String Dim i As Integer '保存文件到数据库中 Sub s_SaveFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset Dim iConcstr As String '读取文件到内容 Set iStm = New ADODB.Stream With iStm .Type = adTypeBinary '二进制模式 .Open .LoadFromFile filename1 End With
'打开保存文件的表 Set iRe = New ADODB.Recordset With iRe .Open "select * from pic", iConc, 1, 3 .AddNew '新增一条记录 .Fields("img") = iStm.Read .Update End With '完成后关闭对象 iRe.Close iStm.CloseEnd SubSub s_ReadFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset '打开表Set iRe = New ADODB.Recordset'得到最新添加的纪录 iRe.Open "select top 1 * from pic order by id desc", iConc, adOpenKeyset, adLockReadOnly '保存到文件 Set iStm = New ADODB.Stream With iStm .Mode = adModeReadWrite .Type = adTypeBinary .Open If Not iRe.EOF Then
iRe.MoveNext .Write iRe("img")'这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误. .SaveToFile App.Path & "\test1.jpg" End If End With ' Image1.Picture = LoadPicture(App.Path & "\test1.jpg") '关闭对象 iRe.Close iStm.CloseEnd Sub Private Sub Command2_Click()CommonDialog1.Filter = "(图片文件*.jpg)|*.jpg" CommonDialog1.ShowOpen filename1 = CommonDialog1.FileNameCall s_SaveFileEnd Sub Private Sub Command4_Click() 'Kill App.Path & "\test1.jpg"Call s_ReadFileEnd SubPrivate Sub Form_Load() '下面的语句是连接sqlserver数据库的. iConcstr = "DSN=pic;UID=sa;PWD=sa;" Set iConc = New ADODB.Connection iConc.Open iConcstr i = 0 End Sub Private Sub Form_Unload(Cancel As Integer)iConc.CloseSet iConc = NothingEnd Sub
先要引用ADO2.5或以上版本的ADO 然后用STREAM对象 数据库中有TABLE1表及PICTUER字段,其类型为:image 程序中引用CommonDialogOption ExplicitDim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim mstream As ADODB.StreamPrivate Sub Command1_Click()'读取图片
Set cn = New ADODB.Connection cn.Open "Provider=SQLOLEDB;data Source=127.0.0.1;Initial Catalog=数据库名;User Id=sa;Password=" Set rs = New ADODB.Recordset rs.Open "Select * from TABLE1 where aaaaa=1 ", cn, adOpenKeyset, adLockOptimistic Set mstream = New ADODB.Stream Image1.Picture = LoadPicture("C:\aa.jpg") rs.Close cn.Close End SubPrivate Sub Command2_Click() '往数据库中写图片 Dim StrPath As String Set cn = New ADODB.Connection cn.Open "Provider=SQLOLEDB;data Source=127.0.0.1;Initial Catalog=数据库名;User Id=sa;Password=" Set rs = New ADODB.Recordset rs.Open "Select * from TABLE1 where aaaaa= 1 ", cn, adOpenKeyset, adLockOptimistic On Error GoTo err: CommonDialog1.CancelError = True CommonDialog1.Filter = "*.jpg;*.bmp;*.gif|*.jpg;*.bmp;*.gif" ' CommonDialog1.Filter = "*.mdb|*.mdb|" CommonDialog1.ShowOpen If CommonDialog1.FileName <> "" Then StrPath = CommonDialog1.FileName Set mstream = New ADODB.Stream mstream.Type = adTypeBinary mstream.Open mstream.LoadFromFile StrPath If rs.EOF Then rs.AddNew rs!empid = 1 rs.Fields("Picture").Value = mstream.Read Else rs.Fields("Picture").Value = mstream.Read End If rs.Update rs.Close cn.Close End If exit sub
复杂的采用Image字段 以二进制方式存储....麻烦
Dim iConcstr As String
Dim iConc As ADODB.Connection
Dim filename1 As String
Dim i As Integer
'保存文件到数据库中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcstr As String '读取文件到内容 Set iStm = New ADODB.Stream With iStm .Type = adTypeBinary '二进制模式 .Open .LoadFromFile filename1 End With
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "select * from pic", iConc, 1, 3
.AddNew '新增一条记录
.Fields("img") = iStm.Read
.Update
End With
'完成后关闭对象 iRe.Close iStm.CloseEnd SubSub s_ReadFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset '打开表Set iRe = New ADODB.Recordset'得到最新添加的纪录 iRe.Open "select top 1 * from pic order by id desc", iConc, adOpenKeyset, adLockReadOnly '保存到文件 Set iStm = New ADODB.Stream With iStm .Mode = adModeReadWrite .Type = adTypeBinary .Open
If Not iRe.EOF Then
iRe.MoveNext .Write iRe("img")'这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误. .SaveToFile App.Path & "\test1.jpg"
End If End With ' Image1.Picture = LoadPicture(App.Path & "\test1.jpg") '关闭对象 iRe.Close iStm.CloseEnd Sub Private Sub Command2_Click()CommonDialog1.Filter = "(图片文件*.jpg)|*.jpg"
CommonDialog1.ShowOpen
filename1 = CommonDialog1.FileNameCall s_SaveFileEnd Sub Private Sub Command4_Click()
'Kill App.Path & "\test1.jpg"Call s_ReadFileEnd SubPrivate Sub Form_Load() '下面的语句是连接sqlserver数据库的. iConcstr = "DSN=pic;UID=sa;PWD=sa;" Set iConc = New ADODB.Connection iConc.Open iConcstr
i = 0
End Sub
Private Sub Form_Unload(Cancel As Integer)iConc.CloseSet iConc = NothingEnd Sub
然后用STREAM对象
数据库中有TABLE1表及PICTUER字段,其类型为:image
程序中引用CommonDialogOption ExplicitDim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim mstream As ADODB.StreamPrivate Sub Command1_Click()'读取图片
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;data Source=127.0.0.1;Initial Catalog=数据库名;User Id=sa;Password="
Set rs = New ADODB.Recordset
rs.Open "Select * from TABLE1 where aaaaa=1 ", cn, adOpenKeyset, adLockOptimistic
Set mstream = New ADODB.Stream
Image1.Picture = LoadPicture("C:\aa.jpg")
rs.Close
cn.Close
End SubPrivate Sub Command2_Click() '往数据库中写图片
Dim StrPath As String
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;data Source=127.0.0.1;Initial Catalog=数据库名;User Id=sa;Password="
Set rs = New ADODB.Recordset
rs.Open "Select * from TABLE1 where aaaaa= 1 ", cn, adOpenKeyset, adLockOptimistic
On Error GoTo err:
CommonDialog1.CancelError = True
CommonDialog1.Filter = "*.jpg;*.bmp;*.gif|*.jpg;*.bmp;*.gif" ' CommonDialog1.Filter = "*.mdb|*.mdb|"
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
StrPath = CommonDialog1.FileName
Set mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.LoadFromFile StrPath
If rs.EOF Then
rs.AddNew
rs!empid = 1
rs.Fields("Picture").Value = mstream.Read
Else
rs.Fields("Picture").Value = mstream.Read
End If
rs.Update
rs.Close
cn.Close
End If
exit sub
err:
End Sub
不过我要结贴了……
感谢大家UP
尤其要谢sys9933(草人) 和yangao(QQ宝典) 了