看的http://blog.csdn.net/hqw7286/article/details/5441000稍有改动

把对数据库的 初始化,获得链接集,执行,退出封装到到一个类中:

头文件:

#pragma once
#include "afx.h"
class CADOConn :public CObject
{
public:CADOConn(void);~CADOConn(void);_RecordsetPtr GetRecordset(_bstr_t bstrSQL);BOOL OnInitADOConn();BOOL Execute(_bstr_t bstrSQL);void ExitConnect(void);
private:_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;
};

实现文件:

#include "StdAfx.h"
#include "ADOConn.h"CADOConn::CADOConn(void)
{
}CADOConn::~CADOConn(void)
{
}_RecordsetPtr CADOConn::GetRecordset(_bstr_t bstrSQL)
{try{if(m_pConnection==NULL)OnInitADOConn();m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(bstrSQL,  m_pConnection.GetInterfacePtr(),//获取库连接的IDispatch  adOpenDynamic,  adLockOptimistic,  adCmdText);}catch (_com_error e){AfxMessageBox(e.ErrorMessage());//return m_pRecordset=NULL;}return m_pRecordset;
}BOOL CADOConn::OnInitADOConn()
{AfxOleInit();  m_pConnection.CreateInstance(__uuidof(Connection));  try  {  m_pConnection->Open("driver={SQL Server}; Server=YuZhiBo-PC;Database=management;UID=sa;PWD=tiger",  "","",adModeUnknown);  }  catch (_com_error* e)  {  AfxMessageBox(_T("数据库连接失败"));  return FALSE;  }  return TRUE;
}BOOL CADOConn::Execute(_bstr_t bstrSQL)
{try{if (m_pConnection==NULL)OnInitADOConn();m_pConnection->Execute(bstrSQL,NULL,adCmdText);}catch (_com_error e){AfxMessageBox(e.ErrorMessage());return false;}return TRUE;
}void CADOConn::ExitConnect(void)
{m_pConnection->Close();::CoUninitialize();
}

图片读入数据库:

void CSqlPIcDlg::OnBnClickedInsqlButton()
{// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);if(m_name!=""){CString strSQL;CADOConn m_CAdoConn;//重新添加一个新的记录strSQL=_T("select * from personalmessage");m_pRecordset=m_CAdoConn.GetRecordset((_bstr_t)strSQL);m_pRecordset->AddNew();m_pRecordset->PutCollect((_bstr_t)"name",(_bstr_t)m_name);m_pRecordset->PutCollect((_bstr_t)"sex",(_bstr_t)m_sex);m_pRecordset->PutCollect((_bstr_t)"student_number",(_bstr_t)m_student_number);m_pic1=cvLoadImage("D://SQL//lena.bmp");if(m_pic1){cvSaveImage("D://SQL//1.bmp",m_pic1);//保存在"management"数据库中的"personalmessage"表,字段名"picture"CFile f;// TODO: Add your control notification handler code hereCString  FilePathName("D://SQL//1.bmp");CFileException e;if(f.Open(FilePathName, CFile::modeRead | CFile::typeBinary, &e)){   int nSize = f.GetLength();          //先得到文件长度BYTE * pBuffer = new BYTE [nSize];  //按文件的大小在堆上申请一块内存if (f.Read(pBuffer, nSize) > 0 )    //把文件读到pBuffer(堆上申请一块内存){  BYTE *pBuf = pBuffer;     ///下面这一大段是把pBuffer里的数据放到库中VARIANT            varBLOB;SAFEARRAY     *psa;SAFEARRAYBOUND     rgsabound[1];if(pBuf){   rgsabound[0].lLbound = 0;rgsabound[0].cElements = nSize;psa = SafeArrayCreate(VT_UI1, 1, rgsabound);for (long i = 0; i < (long)nSize; i++)SafeArrayPutElement (psa, &i, pBuf++);varBLOB.vt = VT_ARRAY | VT_UI1;varBLOB.parray = psa;m_pRecordset->GetFields()->GetItem("picture")->AppendChunk(varBLOB);}delete [] pBuffer;     //删掉堆上申请的那一块内存pBuf=0;                //以防二次乱用}f.Close();                //这里一定要记得先关闭文件,后面再Remove,否则会出现共享冲突CFile::Remove( _T("D://SQL//1.bmp") );}m_pRecordset->Update();m_CAdoConn.ExitConnect();}MessageBox(L"添加成功");}else{MessageBox(L"无信息添加");}m_student_number=m_name=m_sex="";m_pic1=0;UpdateData(FALSE);
}

图片由数据库读出到mfc界面:

void CSqlPIcDlg::OnBnClickedOutpicButton()
{// TODO: 在此添加控件通知处理程序代码CString strSQL=_T("select * from personalmessage");CADOConn m_CAdoConn;m_pRecordset=m_CAdoConn.GetRecordset((_bstr_t)strSQL);long nSize = m_pRecordset->GetFields()->GetItem("picture")->ActualSize;if(nSize > 0){_variant_t    varBLOB;varBLOB = m_pRecordset->GetFields()->GetItem("picture")->GetChunk(nSize);if(varBLOB.vt == (VT_ARRAY | VT_UI1)){if(BYTE *pBuffer = new BYTE [nSize+1])         ///重新申请必要的存储空间{  char *pBuf = NULL;SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);memcpy(pBuffer,pBuf,nSize);               ///复制数据到缓冲区m_pBMPBufferSafeArrayUnaccessData (varBLOB.parray);delete [] pBuffer;pBuf=0;}//输出文件_variant_t varChunk;HRESULT hr;BYTE *pBuf = NULL;  pBuf = (BYTE*)GlobalAlloc(GMEM_FIXED,nSize);SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);CFile outFile(L"D://SQL//2.bmp",CFile::modeCreate|CFile::modeWrite);LPSTR buffer = (LPSTR)GlobalLock((HGLOBAL)pBuf);outFile.Write(buffer,nSize);GlobalUnlock((HGLOBAL)pBuf);outFile.Close();          SafeArrayUnaccessData (varBLOB.parray);}IplImage *img=cvLoadImage("D://SQL//2.bmp");DrawPicToHDC(img,IDC_SQLPIC_STATIC);CFile::Remove( _T("D://SQL//2.bmp") );}
}void CSqlPIcDlg::DrawPicToHDC(IplImage* img,UINT ID)
{CDC *pDC = GetDlgItem(ID)->GetDC();HDC hDC= pDC->GetSafeHdc();CRect rect;GetDlgItem(ID)->GetClientRect(&rect);CvvImage cimg;cimg.CopyOf(img);cimg.DrawToHDC(hDC,&rect); ReleaseDC(pDC);
}

opencv存入数据库图片入门笔记相关推荐

  1. opencv 入门笔记十 图片序列保存为视频

    1.代码: 其中:视频格式设置请看这篇:opencv 入门笔记三(采集视频,保存视频)_Newjet666的博客-CSDN博客 其中:读取图片并画框请看这篇: opencv 入门笔记八 文件夹读取图片 ...

  2. jdbc mysql查询显示图片_JDBC【向数据库中存入读取图片】

    JDBC-向数据库中存入读取图片 注:此代码依赖自定义的数据库连接工具类 1.向数据库存入一张照片 import java.io.File; import java.io.FileInputStrea ...

  3. 用纯ASP代码实现图片上传并存入数据库中

      用纯ASP代码实现图片上传并存入数据库中    热     ★ 用纯ASP代码实现图片上传并存入数据库中 用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐 ...

  4. JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库

    转载自  JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库 开发环境:struts2+ spring + hibernate 数据库:oracle 需求:在HTML编 ...

  5. python将图片存入数据库_使用python把图片存入数据库

    一般情况下我们是把图片存储在文件系统中,而只在数据库中存储文件路径的,但是有时候也会有特殊的需求:把图片二进制存入数据库. 今天我们采用的是python+mysql的方式 MYSQL 是支持把图片存入 ...

  6. 「Python-Django」django 实现将本地图片存入数据库,并能显示在web上

    1. 将图片存入数据库 关于数据库基本操作的学习,请参见这一篇博客:https://www.cnblogs.com/leejy/p/6745186.html 这里我默认,您已经会了基本操作,能在数据库 ...

  7. python把图片存放到数据库_使用Python把图片存入数据库

    一般情况下我们是把图片存储在文件系统中,而只在数据库中存储文件路径的,但是有时候也会有特殊的需求:把图片二进制存入数据库. MYSQL是支持把图片存入数据库的,也相应的有一个专门的字段BLOB(Bin ...

  8. .Net Core裁剪图片并存入数据库

    .Net Core裁剪图片并存入数据库 前言 由于我做的一个项目需要让用户上传图片并且可以在线裁剪并预览,但是我发现网上关于.net core这方面的资料很少,几乎都是别的语言的并且由于.net co ...

  9. 小程序实现图片上传,并获取fileID存入数据库

    小程序在上传图片时,需要获取相册图片或者相机拍照(choosemedia),得到数据后会在使用端建立一个缓存路径,获取到缓存路径以后,使用wx.uploadfile上传,如果按照正常的步骤进行,upl ...

最新文章

  1. LeetCode简单题之数组中的字符串匹配
  2. 人工智能及其应用(第5版).蔡自兴-3章课后习题。【参考答案】
  3. JS如何调用CSS样式表
  4. 在 Java 中如何优雅地判空
  5. DayDayUp:《P2P行业最高端的玩法》源于网友网络收集
  6. 在react项目中编写css,更好的在react项目中写css代码--emotion
  7. elementUI 分页器使用时遇到的Bug
  8. .net 怎么在控制器action中返回一个试图_ASP.NET Core MVC/WebAPI中另辟蹊径的全局统一异常处理方式...
  9. netconsole 重定向kernel日志到远程服务器
  10. VB2010实例(1)_字符大小写转换
  11. WeUI首页、文档和下载 - 专为微信设计的 UI 库 - 开源中国社区
  12. 导弹拦截(动态规划)
  13. 浏览量(PV)、访客数(UV)、访问次数、跳出率是什么意思?
  14. 关于二分查找那些事儿~~~~看完至少节省你两个半月的时间!!!!!
  15. 【微信公众号】6、SpringBoot整合WxJava创建自定义菜单
  16. 【22.05.14】native thread exiting without having called DetachCurrentThread
  17. 微信小程序--窗口背景颜色铺满页面
  18. Postfix配置QQ邮箱发邮件
  19. python读取bin文件,转成16进制通信协议
  20. Web地图服务发布及运维方案

热门文章

  1. 大乘起信论别记(本)
  2. 修改mac地址导致计算机无法上网,win7系统更换MAC地址解决无法连接网络问题的解决方法...
  3. 记录一次Java笔试题记录一次Java笔试题
  4. VMware宿主机与虚拟机之间的文件夹相互共享(看图操作)
  5. 在达沃斯使用约会软件是怎样一番体验
  6. 《江苏省ITS体系框架与规划——需求分析子课题》工作大纲评审会在南京举行[转贴,出处:ITSC 作者:刘浩,张可]
  7. VC++6.0 MFC显示模态对话框和非模态对话框
  8. onenet平台使用教程
  9. ,睹证ATRIX 4G 博访摩托罗拉副总裁沈斌
  10. wordpress 数据库_如何在WordPress中创建视频库(逐步)