VC-用MFC + ADO 把jpg图象文件放入ACCESS库中

MFC在Picture Control上存储图片(image) 方法一:m_LogPersonLiveBmp.DeleteObject(); m_LogPersonLiveBmp.LoadBitmap(IDB_FACE); ((CStatic*)GetDlgItem(IDC_STATIC_IDPHOTO))->SetBitmap((HBITMAP)m_LogPersonLiveBmp); ((CStatic*)GetDlgItem(IDC 阅读详情

用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 数据库失败! 错误信息:%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文件
        { 
            
int nSize = f.GetLength();          //先得到jpg文件长度
            BYTE * pBuffer = new BYTE [nSize];  //按文件的大小在堆上申请一块内存
  
            
if (f.Read(pBuffer, nSize) > 0 )    //把jpg文件读到pBuffer(堆上申请一块内存)
            {
                BYTE 
*pBuf = pBuffer;     ///下面这一大段是把pBuffer里的jpg数据放到库中
                VARIANT   varBLOB;
                SAFEARRAY  
*psa;
                SAFEARRAYBOUND rgsabound[
1];
    
                m_pRecordset
->AddNew();  
       
                
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("j")->AppendChunk(varBLOB);
                }

                m_pRecordset
->Update();
      
            (m_Pic.LoadPictureData(pBuffer, nSize));
//接作调用函数读pBuffer的jpg数据准备显示
            delete [] pBuffer;     //删掉堆上申请的那一块内存
            pBuf=0;                //以防二次乱用
            }

            f.Close();
        }


        CClientDC dc(
this);        
        m_Pic.UpdateSizeOnDC(
&dc); // Get Picture Dimentions In Pixels
        m_Pic.Show(&dc, CRect(200,0,200+m_Pic.m_Width,m_Pic.m_Height) );//显示出来看看
    }
 

}

 
VC利用ADO实现ACCESS 数据库的JPG图片的存储 查询 这个例子是我从http://www.vckbase.com上面下载下来的 我发现它的功能实现效果不好 我又对它进行了改进 基本已经能完善的实现上面展示的图片存储 查询 希望对大家有帮助 立即下载

相关推荐

Zemax非序列模式微透镜阵列仿真:从建模到优化完整指南

光线追迹是光学系统仿真的核心技术,其原理基于几何光学与物理光学的光线传播模型,通过精确计算光线在光学元件中的折射、反射与散射路径,实现对系统性能的预测与评估。在微透镜阵列等复杂多通道光学系统中,传统序列模式因光线路径受限而难以准确模拟串扰与杂散光,非序列光线追迹技术则凭借其灵活的空间传播机制成为关键手段。该技术广泛应用于激光整形、光束匀化、3D传感及光场成像等领域,能够有效支持阵列结构设计与优化。Zemax非序列模式为微透镜阵列仿真提供了完整的建模、优化与公差分析流程,是光学工程师进行复杂系统设计的核心工具

weixin_29967003的博客 331

VC++对Access数据库的操作(查询、插入、更新、删除等)

Microsoft Office Access是由微软发布的关系数据库管理系统。Access数据库常应用于小型软件系统中,比如:生产管理、销售管理、库存管理等各类企业管理软件,其最大的优点是:简单易学、使用灵活。 下面我们结合实例来详细说明,在VC++ MFC中,如何使用Access数据库文件进行数据的存储,如何实现对数据库中数据的查询、插入、更新和删除等操作。 (实例可在我的优快云资源中下

小木头工作室 2万+

取证实战:当嫌疑人电脑已关机,如何利用EFDD从休眠文件提取BitLocker密钥?

本文详细介绍了如何利用Elcomsoft Forensic Disk Decryptor(EFDD)从休眠文件(hiberfil.sys)中提取BitLocker密钥的实战技术。通过分析休眠文件中的内存快照,取证人员可以突破已关机加密设备的防线,获取关键解密信息。文章涵盖了工具配置、镜像获取、密钥提取及验证等完整流程,并提供了疑难问题解决方案和法律合规建议。

weixin_29315091的博客 343

(一)VC保存和显示数据库图像(BMP)

<br />源码下载:<br />程序运行界面显示如下:<br /> <br /> <br /><br />简述关键代码如下:<br />1、保存图片数据到数据库<br />以下是代码片段:<br />//BMP图片保存到数据库 <br />    try <br />    { <br />        _RecordsetPtr    pRecordset; <br />        pRecordset.CreateInstance(__uuidof(Recordset)); <br />    

专注于技术开发、项目管理 1418

python实现ECMS算法

ECMS(Equivalent Consumption Minimization Strategy)算法是一种用于混合动力汽车能量管理系统的优化策略。它通过计算等效油耗来平衡电池电量消耗和燃油消耗,从而优化整体能耗。以下是一个简单的Python实现,用于演示ECMS算法的基本思想。这个实现假设了一个简单的混合动力汽车模型,其中电池电量和燃油消耗是主要的优化目标。

weixin_45570158的博客 922

保姆级教程:在瑞芯微RV1126B上部署轻量化YOLOv8,实现端侧实时目标检测

本文详细介绍了在瑞芯微RV1126B芯片上部署轻量化YOLOv8模型的完整流程,包括开发环境搭建、模型训练优化、量化转换及嵌入式部署。通过利用RV1126B的3TOPS NPU算力和AI-ISP特性,实现端侧实时目标检测,提升边缘AI应用的性能和效率。

weixin_30329623的博客 267

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

将JPG,BMP,PNG图片插入到ACCESS数据库,EmbarcaderoRADStudioXE6编译通过。 C/C++ code ? 1 2 #include #include C/C++ code ? 1 2 3

汐彤工作室 3886

ATGM332D模块串口配置保姆级教程:从9600波特率到NMEA数据过滤,一次搞定

本文提供ATGM332D模块串口配置的详细教程,涵盖从基础硬件连接到高级NMEA数据过滤的全过程。内容包括波特率优化、数据输出频率调整、NMEA语句过滤等实用技巧,帮助开发者快速掌握GNSS模块配置,提升定位系统性能。

weixin_30664051的博客 513

用MFC + ADO 把jpg图象文件放入ACCESS库中

网上好象这个例子还没有样,如果你用VC做一个人事部管理系统,不可能没有人员照片吧!能找到的例子中都是用BMP,不敢用!这个例子用到了VC6.0和access2002(officeXP),涉及到ADO的用法,文件对话框的使用,一个CPicture类和一个buffer缓冲区。 一、我的ADO用法整理1. stdafx.h头文件中加入: #import "c:/program files/common...

weixin_33778778的博客 182

华为OD机考2025C卷 - 高矮个子排队(Java & Python& JS & C++ & C)

华为OD机考2025C卷 - 高矮个子排队。提供在线OJ刷题。Java、C++、Python、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1681

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

AI人人懂 2168

VC知识库搜索ADO

  [第1页/共2页] 下一页 ADO操作access全过程和CListCtrl的用法 详细信息 提供Ado操作access的实例。[文档属性] VC原创文档[中文][文档作者] 张展明 [更新日期] 2004-11-4 11:17:00 [浏览次数] 3090相关评论 VC++6.0 中用 ADO 存取 Access 数据库的一点总结

new...... 2836

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

用VC处理ACCESS中的位图数据

用VC处理ACCESS中的位图数据癫侠于2000-08-17下午05:49:58发表:----比较复杂的数据库中一般会有位图数据(比如相片)。虽然这类“OLE对象”的插入、删除以及替换操作在ACCESS里容易实现,在VC中却显得复杂而且颇费周折。以下把作者用VC处理ACCESS数据库中的位图数据的体会简单叙述一下,以请教于大家。----在CdaoRecordset派生类的对象中,VC自动为ACCE

糯米糊糊的专栏 2947

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC保存和显示数据库图像(JPG、JPEG)

<br />源码下载:http://download.youkuaiyun.com/source/2840272<br />程序运行界面显示如下:<br /><br /><br /><br />简述关键代码如下:<br /> <br />1、保存图片数据到数据库<br />以下是代码片段:<br />//JPG图片保存到数据库 <br />    try <br />    { <br />        _RecordsetPtr    pRecordset; <br />        pRecordset.Cre

专注于技术开发、项目管理 1776

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC:添加图片

总体:对于普通的BMP\DIB格式的图片,GDI中提供了LoadImage()函数;对于PNP、JPG、GIF、等格式的文件VC++中提供了OleLoadPicture()函数。 一、 1、创建一个单文档应用程序,并在View类中添加函数、变量如下: void LoadPicture(); LPPICTURE m_picture; ...

acass424022的博客 198

VC++之数据库连接Access

以前的时候用VC写了两种连接Access数据库的方法,为了方便以后查找把这两种方法做一下简单的介绍。Windows平台的数据接口标准有ODBC、OLE DB、ADO和Borland的BDE接口,ODBC(Open DataBase Connectivity)只能用于访问关系型数据库,为了访问非关系型数据微软设计了OLE DB接口并在此基础上推出了ADO(ActiveX Data Objects)。

Howard_Liu1314的专栏 741

关于用 VC++6.0新建access需要注意的

网上有很多人写了怎么用vc生成access,都不太完整,搬来运行,都有些毛病,现理一份完整的,可以直接运行的,说明如下:(大部分代码都来自网上,有些细节提示一下) 使用的环境:vc++6.0 sp6,office2007(不知道其他的是否可以,没试过) 以下代码转自:http://www.cnblogs.com/suhuaiqiang/archive/2010/09/06/181935

Adrian 博客 1127

VS(MFC)保存图片到SQLServer数据库

在MFC中将图片以二进制格式直接保存到SQLServer数据库中

weixin_46405486的博客 2357

MFC对话框打开一幅图片并在picture显示和图片保存

转自:MFC对话框打开一幅图片并在picture显示和图片保存 百度文库,优快云备份,Github工程

无敌三脚猫的专栏 4285

winform中将图片保存到数据库与数据库中读取显示到picturebox上封装imageHelper

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Drawing; using System.Drawing.Imaging; namespace Common { public static class Im...

sd6275832ght的博客 1170

[VB.NET]如何把一个图片保存到access中,又如何把它读取出来,并在picturebox中显示?

<!--google_ad_client = "pub-8333940862668978";/* 728x90, 创建于 08-11-30 */google_ad_slot = "4485230109";google_ad_width = 728;google_ad_height = 90;//--><script type="text/javascript"

VB.NET学习网-VB.NET实例、VB.NET教程、VB.NET源码下载 2631

image控件与数据库中二进制图片的交互(存储与读取)

首先引入这个问题,一个注册会员的网站,一般会要求用户上传头像。这里我们就是针对上传头像这一模块,做相应的操作。 当用户把头像上传到注册页面后,注册页面要显示这个头像,还能在此会员下次登录这个网站时,显示出会员的头像,那么我们头像的信息应该也与会员别的信息一样被存入到数据库中,即数据库里有一个字段是关于头像的。至于这个字段到底应该存什么,可以分为两种情况:存入头像的链接地址...

weixin_30655219的博客 422
上一篇: 生活-干蚕豆去皮
下一篇: 数据结构及算法-何谓数据结构
MasterFT
博客等级 码龄20年 48粉丝 59原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值