MyException - 我的异常网
当前位置:我的异常网» VC/MFC » ADO图片放到access数据库中,怎么取出放到图片控件

ADO图片放到access数据库中,怎么取出放到图片控件上显示

www.MyException.Cn  网友分享于:2013-03-27  浏览:19次
ADO图片放到access数据库中,如何取出放到图片控件上显示?
网上看到的代码,使用CPicture类, ADO操作将图片放到access数据库中,但这例子不是显示到picture control 控件上,请教如何将存进到数据库中的二进制图片数据显示到图片控件上 ,谢谢 



用MFC   +   ADO   把jpg图象文件放入ACCESS库中 
作者:刘欣 

下载本文示例代码 

网上好象这个例子还没有样,如果你用VC做一个人事部管理系统,不可能没有人员照片吧!能找到的例子中都是用BMP,不敢用! 
这个例子用到了VC6.0和access2002(officeXP),涉及到ADO的用法,文件对话框的使用,一个CPicture类和一个buffer缓冲区。 

  一、我的ADO用法整理 

1. stdafx.h头文件中加入:   

#import   "c:\program   files\common   files\system\ado\msado15.dll "   no_namespace   rename( "EOF ", "adoEOF ") 
2. 应用程序初始化中加入:AfxOleInit(); 

HRESULT   hr; 
try 

hr   =   m_pConnection.CreateInstance( "ADODB.Connection ");///创建Connection对象 
if(SUCCEEDED(hr)) 

hr   =   m_pConnection-> Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=wy.mdb ", " ", " ",adModeUnknown);///连接数据库 
///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51; 


catch(_com_error   e)///捕捉异常 

CString   errormessage; 
errormessage.Format( "打开   wy.mdb   数据库失败!\r\n错误信息:%s ",e.ErrorMessage()); 
AfxMessageBox(errormessage);///显示错误信息 

3. 应用程序EXIT中加入:if   (m_pConnection-> State)   
        m_pConnection-> Close();   
4. 应用程序中加入:_ConnectionPtr   m_pConnection; 
5. 对话框类中加入:   _RecordsetPtr   m_pRecordset; 
6.   注意使用:extern   CWYApp   theApp; 
7.   使用纪录集:try 

m_pRecordset.CreateInstance( "ADODB.Recordset "); 
m_pRecordset-> Open( "SELECT   *   FROM   客户   ORDER   BY   客户id ", 
_variant_t((IDispatch*)theApp.m_pConnection,true), 
adOpenStatic,adLockOptimistic,adCmdText); 


catch(_com_error   e)///捕捉异常 

AfxMessageBox( "读取数据库失败! ");///显示错误信息 

CPicture类(它能够显示JPG.GIF等等图片,详情请看CPicture.h头文件)   
CPicture.h 
CPicture.cpp 

  二、流程图 

  

你一看便知:   ADO作用在buffer内存和ACCESS2002数据库之间,而CPicture作用在buffer内存和显示窗口之间.   

  三、将jpg存入库并显示   

void   COneDlg::OnButton1()             

CFile   f; 
CString     FilePathName; 
CFileException   e; 

CFileDialog   dlg(TRUE,NULL,NULL,0, "jpg   Files   (*.jpg)|*.jpg|| ",this); 
if(dlg.DoModal()==IDOK) 

FilePathName=dlg.GetPathName(); 
if(m_Pic.m_IPicture   !=   NULL)   m_Pic.FreePictureData();   //   Important   -   Avoid   Leaks... 

if(f.Open(FilePathName,   Cfile::modeRead   |   Cfile::typeBinary,   &e))   //打开了一个jpg文件 

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有