打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MFC中利用CppSQLite3将图片等存入sqlite中

   在MFC中要将图片的二进制数据存数到sqlite中。我们可以利用CppSQLite3DB和CppSQLite3Statement

   首先我们利用CFile将文件读入到内存中

   CFile file;
 if(file.Open("C:\\1.jpg",CFile::modeRead | CFile::typeBinary))
 {
  ULONG fileSize=file.GetLength();//得到文件大小
  BYTE * fileByte=new BYTE[fileSize];//按照文件大小在堆上分配内存空间
  if(file.Read(fileByte,fileSize)>0)//把文件放到fileByte中
  {
   CppSQLite3DB db;
   CppSQLite3Statement stat;
   db.open("Test.tst");
   stat=db.compileStatement("insert into ConText(ID,ImageFile,SoundFile) values(NULL,?,?)");
   stat.bind(1,(const unsigned char *)fileBype,fileSize);

   stat.bind(2,(const unsigned char *)fileBype,fileSize);
   stat.execDML();
   stat.finalize();//释放分配的stat空间
   db.close();
  }
  delete [] fileBype;
  file.Close();
 }

   这样我们就将一个图片保存得到sqlite中了,同样我们可以将sqlite中的而二进制数据读出来保存为图片

   如下

   CppSQLite3DB db;
 db.open("Test.tst");
 CppSQLite3Statement stat;
 stat=db.compileStatement("select * from ConText where ID=1");
 CppSQLite3Query rs=stat.execQuery();
 while(!rs.eof())
 {
  int len;
  const unsigned char * imgs=rs.getBlobField(1,len);
  CFile file;
  
  if(file.Open("C:\\2.jpg",CFile::typeBinary|CFile::modeWrite|CFile::shareDenyNone|CFile::modeNoTruncate|CFile::modeCreate))
  {
   file.Write((BYTE *)imgs,len);
   file.Close();
  }
  rs.nextRow();
 }
 rs.finalize();
 stat.finalize();

   这样我们就可以将文件保存到sqlite数据库中了,只要将sqlite要保存文件的字段类型设置为blob就可以了

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用sqlite如何存储图片电影等文件
当C++遇到iOS应用开发---SQLITE篇 ado net
sqlite教程 - 我的文章 - Jerry
SQLite数据库中存取图片文件
Android批量插入数据到SQLite数据库
使用SQLite3开发java应用程序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服