Chinaunix首页 | 论坛 | 博客
  • 博客访问: 474559
  • 博文数量: 99
  • 博客积分: 3621
  • 博客等级: 中校
  • 技术积分: 1089
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-22 16:29
文章存档

2012年(21)

2011年(28)

2010年(50)

分类:

2010-10-12 14:50:25

'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对象。

阅读(857) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~