zoukankan      html  css  js  c++  java
  • 使用流对象保存和显示图片

    打开vb6,新建工程。

    添加两个按钮,一个image控件

    注意:Access中的photo字段类型为OLE对象.

    SqlServer中的photo字段类型为Image

    .

    '** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本

    ‘2.5版本以下不支持Stream对象

    Dim iConcstr As String

    Dim iConc As ADODB.Connection

    '保存文件到数据库中

    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 App.Path + ""test.jpg"

        End With

        '打开保存文件的表

        Set iRe = New ADODB.Recordset

        With iRe

            .Open "select * from img", iConc, 1, 3

            .AddNew         '新增一条记录

            .Fields("photo") = iStm.Read

            .Update

        End With

        '完成后关闭对象

        iRe.Close

        iStm.Close

    End Sub

    Sub s_ReadFile()

        Dim iStm As ADODB.Stream

        Dim iRe As ADODB.Recordset

        '打开表

    Set iRe = New ADODB.Recordset

    得到最新添加的纪录

        iRe.Open "select top 1 * from img order by id desc", iConc, adOpenKeyset, adLockReadOnly

        '保存到文件

        Set iStm = New ADODB.Stream

        With iStm

            .Mode = adModeReadWrite

            .Type = adTypeBinary

            .Open

            .Write iRe("photo")

    这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误.

            .SaveToFile App.Path & ""test1.jpg"

        End With

        Image1.Picture = LoadPicture(App.Path & ""test1.jpg")

        '关闭对象

        iRe.Close

        iStm.Close

    End Sub

    Private Sub Command1_Click()

    Call s_ReadFile

    End Sub

    Private Sub Command2_Click()

    Call s_SaveFile

    End Sub

    Private Sub Form_Load()

        '数据库连接字符串

        iConcstr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _

            ";Data Source=F:"csdn_vb"database"保存图片"access图片"img.mdb"

    下面的语句是连接sqlserver数据库的.

        ‘iConcstr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _

    ‘ "User ID=sa;Password=;Initial Catalog=test;Data Source=yang"

        Set iConc = New ADODB.Connection

        iConc.Open iConcstr

    End Sub

    Private Sub Form_Unload(Cancel As Integer)

    iConc.Close

    Set iConc = Nothing

    End Sub

    你也可以使用二进制方式读取,但是你可以看到流对象的简单高效.

    可以参考MS的知识库文章来加强这个知识点:

    http://support.microsoft.com/default.aspx?scid=kb;EN-US;258038


    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    rabbitmq报错:not_a_dets_file,"/var/lib/rabbitmq/mnesia/rabbit@Sfabrici-Demo01/recovery.dets"的解决办法
    ubuntu18上关闭默认的防火墙
    《GCD宣言》全文
    springboot日志配置
    springboot打jar包【我】
    MongoDB 4.2 用户管理
    【短道速滑四】Halcon的texture_laws算子自我研究
    Android集合之SparseArray、ArrayMap详解
    浅析微信支付:下载对账单和资金账单
    学习如修行
  • 原文地址:https://www.cnblogs.com/Athrun/p/1127622.html
Copyright © 2011-2022 走看看