回 帖 发 新 帖 刷新版面

主题:在数据库中存取图片哪种方法好??

如何方便地存取图片,最好不用临时文件。请注源程序

回复列表 (共10个回复)

沙发

建议你不要把图片放入数据库,而是放到一个独立的图片文件夹中,这样效率高些,数据库负载也小。
访问和存取图片都可以采取读取二进制文件的方式进行。(如何读取文件应该没有问题吧?不明白上网查查去,到处都有)

板凳

保存一堆以数字命名的图片就行了,
如1.gif,2.gif,3.gif……
1.jpg,2.jpg,3.jpg……
用loadpicture()调。比数据库简单。

3 楼

要是不想让用户直接看到图片文件,可以做在“RES”文件中,
用loadRESpicture()函数调用。
也比数据库简单。

4 楼

最好是使用ADO的Stream对象(ADO2.5以上)

5 楼

楼上能不能再指点明白一些?给个范例吧

6 楼

'** 数据库使用 ADODB.Stream 保存/读取JPG文档的示例代码
'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本

Option Explicit
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim StmJPG As ADODB.Stream

'窗体载入时连接数据库
Private Sub Form_Load()
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False;Jet OLEDB:Database Password=123"
End Sub

'将JPG文档保存到数据库
Private Sub cmdSave_Click()
    Set rs = New ADODB.Recordset
    rs.Open "select * from TableName", cn, adOpenKeyset, adLockOptimistic
    Set StmJPG = New ADODB.Stream
    With StmJPG
        .Type = adTypeBinary    '二进制类型
        .Open
        .LoadFromFile "F:\My Documents\test.JPG"  '将JPG文档载入StmJPG,转为流文件
    End With
    rs.AddNew
    rs.Fields("Photo").Value = StmJPG.Read  
    rs.Update
    StmJPG.Close
    rs.Close
End Sub

'读取数据库中的JPG文档
Private Sub cmdRead_Click()
    Dim Sql As String
    Sql = "select * from TableName where id=3"
    Set rs = New ADODB.Recordset
    rs.Open Sql, cn, adOpenKeyset, adLockOptimistic
    Set StmJPG = New ADODB.Stream
    With StmJPG
        .Mode = adModeReadWrite
        .Type = adTypeBinary
        .Open
        .Write rs!Photo
        .SaveToFile App.Path & "\TempTest.JPG"
        .Close
    End With
    Image1.Picture=LoadPicture(App.Path & "\TempTest.JPG")
    Kill App.Path & "\TempTest.JPG")
    rs.Close
End Sub

7 楼

非常感谢!

8 楼

那个。res文件有什么介绍啊?
用处和其他的一些东西
谢谢。。。。。。。
而loadrespicture和loadpicture有什么区别啊???

9 楼

res文件主要是存放窗体上或代码里经常用到的图片、文字等。类似于全局变量的值,只要改变了res文件,工程中任何调用的地方都随之改变。方便维护。

10 楼


'读取数据库中的JPG文档
Private Sub cmdRead_Click()
    Dim Sql As String
    Sql = "select * from TableName where id=3"
    Set rs = New ADODB.Recordset
    rs.Open Sql, cn, adOpenKeyset, adLockOptimistic
    Set StmJPG = New ADODB.Stream
    With StmJPG
        .Mode = adModeReadWrite
        .Type = adTypeBinary
        .Open
        .Write rs!Photo
        .SaveToFile App.Path & "\TempTest.JPG"
        .Close
    End With
    Image1.Picture=LoadPicture(App.Path & "\TempTest.JPG")
    Kill App.Path & "\TempTest.JPG")
    rs.Close
End Sub
斑竹\\能解释一下你写的代码吗?谢谢了
特别是.Write rs!Photo
        .SaveToFile App.Path & "\TempTest.JPG"
这两句啊,[em10]

我来回复

您尚未登录,请登录后再回复。点此登录或注册