C++ builder XE对于sqlite图片Blob字段的多种存取方法

调试环境:win7,C++ builder XE 10.2调试通过。 双击和单击都可以取出图片字段的记录,有二种不同取法。

CSDN源码下载:C++BuilderXE读取sqlite图片Blob字段的多种方法.rar-C++文档类资源-CSDN下载icon-default.png?t=M4ADhttps://download.csdn.net/download/lzksword/13944643

//---------------------------------------------------------------------------

//直接存储SQLite中图片Blob字段二种方法

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

 Form1->FDConnection1->DriverName="SQLite";

 Form1->FDConnection1->Params->DriverID="SQLite";

 String Dstr=ExtractFilePath(ParamStr(0))+"testdata.db";

 Form1->FDConnection1->Params->Database=Dstr;

 Form1->FDConnection1->Connected=true;

 //ShowMessage(Dstr);

 //统计数目

 Form1->FDQuery1->Open("select * from itdata");

TMemoryStream *mem=new TMemoryStream;

if(Label1->Caption.Length() && ListBox1->ItemIndex>=0)

{

   mem->LoadFromFile(Label1->Caption);

   Form1->FDQuery1->RecNo=ListBox1->ItemIndex;

   Form1->FDQuery1->Edit() ;

    //存储

    TBlobField *blob_pic=(TBlobField *)Form1->FDQuery1->Fields->FieldByName("image");

   try

   {

      //blob_pic->LoadFromFile(Label1->Caption);

      blob_pic->LoadFromStream(mem);

   }

   catch(...)

   {

     ShowMessage("图像存盘失败!");

   }

   Form1->FDQuery1->Post();

}

delete mem;

//另一种(存的方法)

//TMemoryStream*   pMS   =   new   TMemoryStream;

//pMS-> LoadFromFile(Edit2-> Text);

//ADOQuery1-> Parameters-> ParamByName( "title ")-> Value   =   Edit1-> Text;

//ADOQuery1-> Parameters-> ParamByName( "image ")-> LoadFromStream(pMS,   ftBlob);

//ADOQuery1-> ExecSQL();

}

//---------------------------------------------------------------------------

//直接读取SQLite中图片Blob字段二种方法

//还有一种更好的方法,不需要导出图片再载入的方式,直接利用TMemoryStream载入到TImage中显示。可以从下载源码文件获得,谢谢!

//---------------------------------------------------------------------------

void __fastcall TForm1::ListBox1Click(TObject *Sender)    //单击显示图片,还有一种是双击可以直接显示图片

{

Form1->FDConnection1->DriverName="SQLite";

 Form1->FDConnection1->Params->DriverID="SQLite";

 String Dstr=ExtractFilePath(ParamStr(0))+"testdata.db";

 Form1->FDConnection1->Params->Database=Dstr;

 Form1->FDConnection1->Connected=true;

 //ShowMessage(Dstr);

 //统计数目

 Form1->FDQuery1->Open("select * from itdata");

 //读取

 Form1->FDQuery1->RecNo=ListBox1->ItemIndex;

 TBlobField *blob_pic=(TBlobField *)Form1->FDQuery1->Fields->FieldByName("image");

   try

   {

      blob_pic->SaveToFile(ExtractFilePath(ParamStr(0))+"//temp//temp1.bmp");

      Image1->Picture->LoadFromFile(ExtractFilePath(ParamStr(0))+"//temp//temp1.bmp");

   }

   catch(...)

   {

      ShowMessage("图像读取失败!");

   }

   // delete blob_pic;

//另一种(取blob)

//ADOQuery2-> Parameters-> ParamByName( "id ")-> Value   =   Edit3-> Text.ToInt();

//ADOQuery2-> Open();

//

//TMemoryStream*   pMS   =   new   TMemoryStream;

//TBlobField*   pField   =   (TBlobField*)   ADOQuery2-> FieldByName( "image ");

//pField-> SaveToStream(pMS);

//pMS-> SaveToFile( "aa.jpg ");

//ADOQuery2-> Close();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lzksword

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

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

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

打赏作者

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

抵扣说明:

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

余额充值