'VB/VBA中实现数据库中的文件存取
'示例数据库为ACCESS数据库,用SQL数据库的话,只需要改连接字符串 ' '************************************************************************* '** '** 使用 ADODB.Stream 保存/读取文件到数据库 '** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本 '** '** ----- 数据库连接字符串模板 --------------------------------------- '** ACCESS数据库 '** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _ '** ";Data Source=数据库名" '** '** SQL数据库 '** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _ '** "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名" '** '************************************************************************* ' '保存文件到数据库中
Sub s_SaveFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset Dim iConcStr As String Dim iconc As New ADODB.Connection 'ACCESS数据库的连接字符串 ' iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _ ' ";Data Source=F:My Documents客户资料1.mdb" iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb;Persist Security Info=False" 'SQL数据库的连接字符串 ' iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _ ' "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名" ' '读取文件到内容 iconc.ConnectionString = iConcStr iconc.Open Set iStm = New ADODB.Stream With iStm .Type = adTypeBinary '二进制模式,如果是用text/ntext字段保存纯文本数据,则改用 adTypeText .Open .LoadFromFile "c:\ee.pdf" '实际应用的时候,在这里获取外部文件名称 End With '打开保存文件的表 Set iRe = New ADODB.Recordset With iRe .Open "t1", iconc, adOpenKeyset, adLockOptimistic .AddNew '新增一条记录 .Fields("img") = iStm.Read .Update End With '完成后关闭对象 iRe.Close iStm.Close End Sub
'从数据库中读取数据,保存成文件 Sub s_ReadFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset Dim iconc As String Dim icon As New ADODB.Connection '数据库连接字符串 ' iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _ ' ";Data Source=\xzc$Inetpubzjzjzj.mdb" iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb;Persist Security Info=False" icon.ConnectionString = iConcStr icon.Open '打开表 Set iRe = New ADODB.Recordset iRe.Open "t1", icon, adOpenKeyset, adLockReadOnly 'iRe.Filter = "id=64"
If iRe("img").ActualSize > 0 Then
'保存到文件 Set iStm = New ADODB.Stream With iStm .Mode = adModeReadWrite .Type = adTypeBinary '二进制模式,如果是用text/ntext字段保存纯文本数据,则改用 adTypeText .Open .Write iRe("img") .SaveToFile "c:\est.pdf" '实际应用的时候,在这里输出文件,并打开它 End With '关闭对象 iStm.Close End If
iRe.Close End Sub Private Sub Command1_Click() s_SaveFile End Sub
Private Sub Command2_Click() s_ReadFile End Sub
|
源码来源
http://blog.csdn.net/huangchonghai/archive/2007/01/31/1499194.aspx
在ACCESS数据库里,字段类型为OLE对象。
阅读(968) | 评论(0) | 转发(0) |