将JPG,BMP,PNG图片插入到ACCESS数据库

将JPG,BMP,PNG图片插入到ACCESS数据库,Embarcadero RAD Studio XE6编译通过。

#include <Vcl.Imaging.jpeg.hpp>
#include <Vcl.Imaging.pngimage.hpp>
//---------------------------------------------------------------------------
//双击打开图片
void __fastcall TfrmMain::img1DblClick(TObject *Sender)
{
    if(dlgOpenPic1->Execute())
    {
        String cFileName = dlgOpenPic1->FileName ;
        try{
            TMemoryStream* pMS = new TMemoryStream() ;
            TBitmap *pBMP = new TBitmap();
            TJPEGImage *pJPG = new TJPEGImage();
            TPngImage *pPNG = new TPngImage;
            unsigned char *Buffer = new unsigned char[2] ;
            int Type;
            pMS->Seek(0,soFromBeginning);
            pMS->Size = 0 ;
            pMS->LoadFromFile(cFileName) ;
            pMS->Position = 0 ;
            //pMS->Seek(0,soFromBeginning) ;
            pMS->ReadBuffer(Buffer,2) ;
            Type = ("0x"+IntToHex(Buffer[0],2)+IntToHex(Buffer[1],2)).ToInt() ;
            pMS->Position = 0 ;
            switch (Type)
            {
                case 0xFFD8:        //JPG文件
                        pJPG->LoadFromStream(pMS) ;
                        break ;
                case 0x8950:        //PNG文件
                        pPNG->LoadFromStream(pMS) ;
                        pBMP->Assign(pPNG) ;
                        pJPG->Assign(pBMP) ;
                        pJPG->JPEGNeeded() ;
                        break ;
                case 0x424D:        //BMP文件
                        pBMP->LoadFromStream(pMS) ;
                        pJPG->Assign(pBMP) ;
                        pJPG->JPEGNeeded() ;
                        break ;
                default:return ;
            }
            img1->Picture->Assign(pJPG) ;
            delete pBMP ;
            delete pJPG ;
            delete pPNG ;
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
    }
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//数据插入
void __fastcall TfrmMain::btn11Click(TObject *Sender)
{
    TMemoryStream *pMS = new TMemoryStream;
    String str ;
    qry1->Close() ;
    qry1->SQL->Clear() ;
    String sql = "insert into 信息 (名称,图片) "
                 "values (:名称,:图片)" ;
    qry1->SQL->Add(sql) ;
    qry1->Parameters->ParamByName("名称")->Value  = edt1->Text ;
    if(img1->Picture->Graphic != NULL)
    {
        img1->Picture->Graphic->SaveToStream(pMS);
        pMS->Position = 0;
        qry1->Parameters->ParamByName("图片")->LoadFromStream(pMS,ftBlob) ;
    }
    qry1->ExecSQL() ;
    qry1->Close() ;
    delete pMS;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//读取JPG
void __fastcall TfrmMain::btn21Click(TObject *Sender)
{
    TMemoryStream *pMS = new TMemoryStream ;
    TJPEGImage *pJPG = new TJPEGImage ;
    qry1->Close() ;
    qry1->SQL->Clear() ;
    String sql = "select * from 信息 where 名称='"
               + edt1->Text +"'" ;
    qry1->SQL->Add(sql) ;
    qry1->Open() ;
    TBlobField* pBF = (TBlobField*)qry1->FieldByName("图片") ;
    pMS->Seek(0,soFromBeginning);
    pMS->Size = 0 ;
    pBF->SaveToStream(pMS) ;
    pMS->Seek(0,soFromBeginning);
    pJPG->LoadFromStream(pMS) ;
    img1->Picture->Assign(pJPG) ;
    qry1->Close() ;
    delete pJPG;
    delete pMS;
}
//---------------------------------------------------------------------------
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木叶流丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值