我们知道,在VB下进行基于ADO的编程相对比较简单,只要我们通过reference加载了适当的类型库以后,我们就可以正常的调用ADO对象,但是可能很多开发人员对于VC下的基于ADO,OLE DB的数据库开发就没有很多经验了。所以我们有必要先讨论一下VC下基于ADO开发的几种模式。
VC下关于ADO的操作分析
一般来说,用VC++有三种方法可以实现对ADO的操作:
1. 通过#import方法
2. 通过利用MFC OLE的ClassWizard
3. 通过Windows API中COM相关的函数
在所有这三种方法种,#import是最方便的方法,它允许你产生一个类似VB的类结构。使你的开发变的很方便。
#import方法
在#import中,你需要提供所包含的类型库的路径和名称,它能够自动产生一个对GUIDs的定义,同时对自动生成对ADO对象的封装。同时,能够列举它在类型库中所能找到的类型,对任何你所引用的类型库,VC++会在编译的时候自动生成两个文件:
一个头文件(.tlh),它包含了列举的类型和对类型库中对象的定义
一个实现文件(.tli)对类型库对象模型中的方法产生封装。
比如,你在stdafx.h文件中增加对msado15.dd的import以后,VC++会产生msado15.tlh和msado15.tli两个文件。
#import也能够使用一个新的类,_com_ptr_t,也被称为智能指针。智能指针能够自动执行QuyerInterface,AddRef和Release函数。对一个COM对象模型使用#import产生代码和VBA很类似。
下面的代码演示了如何使用#import在你的应用中实现对ADO的操作:
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace
rename ( "EOF", "adoEOF" )
对EOF进行该名是必要的,因为典型的VC++应用都已经定义了EOF作为常数-1。
下面分析用#import定义和初始化ADO对象
通常来说,操作一个自动化对象需要两个步骤:定义和初始化一个用来操作COM对象的变量。通过#import你可以在一行代码完成这个工作,通过使用智能指针(_com_ptr_t)的构造函数传递一个有效的CLSID或者是PROGID。开发人员也可以通过_com_ptr_t::CreateInstance()方法来定义对象的一个示例。具体代码如下所示:
_ConnectionPtr Conn1( __uuidof( Connection ) );
也可以采用下面的代码实现同样的功能
_ConnectionPtr Conn1 = NULL; file://定义对象
HRESULT hr = S_OK;
hr = Conn1.CreateInstance( __uuidof( Connection ) ); file://创建实例
推荐采用第二种方法,因为如果用第一种方法的话不能返回一个失败的HRESULT,所以也就不能判断ADO连接对象是成功还是失败。注意这里的__uuidof( Connection)中的Connection是在.tlh文件中定义的。通过把它传递给方法CreateInstance,实际上就是创建了一个有效的ADOConnection对象。
需要注意到的是#import中有一个属性为no_namespace,这是告诉编译器该类不在一个单独的名字空间中,使用no_namespace意味着你不需要在初始化变量的时候引用名字空间。当然如果在你的应用中需要倒入多个类型库的话,最后不要使用no_namespace,以免引起名字冲突。
下面是简单的基于ADO应用的代码,采用了#import方法:
#include
#import rename("EOF", "adoEOF")
void main()
{
HRESULT hr = S_OK;
file://因为没有在#import中指定no_namespace,所以必须采用ADODB::这样的形式
file://来作为变量类型
ADODB::_RecordsetPtr Rs1 = NULL;
file://通过ODBC建立ADO连接
_bstr_t Connect( "DSN=AdoDemo;UID=sa;PWD=;" );
_bstr_t Source ( "SELECT * FROM Authors" );
CoInitialize();
file://初始化Rs1对象
hr = Rs1.CreateInstance( __uuidof( ADODB::Recordset ) );
file://对hr的返回正确性判断省略
Rs1->Open( Source, Connect,
ADODB::adOpenForwardOnly,
ADODB::adLockReadOnly, -1 );
file://这里可以对记录集Rs1进行操作
Rs1->Close();
Rs1 = NULL;
::MessageBox( NULL, "Success!", "", MB_OK );
CoUninitialize();
}
分享到:
相关推荐
1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/144633369 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理
1.Matlab实现DBN-ELM深度置信网络融合极限学习机多输入单输出回归预测(Matlab完整源码和数据)。 2.输出对比图、误差图,运行环境Matlab2023b及以上。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 5.作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信.
2024 Java offer 收割指南.pdf
2011-2023年各省金融监管水平数据(含原始数据+计算过程+计算结果) 1、时间:2011-2023年 2、来源:国家统计J、统计NJ 3、指标:金融业增加值、金融监管支出、金融监管水平 4、计算方法:金融监管水平=金融监管支出/金融业增加值
花生好坏缺陷识别数据集,7262张图片,支持coco json格式的标注,识别准确率在95.7% 两种标签: Good,Bad 花生好坏缺陷识别数据集,7262张图片,支持yolo,coco json,pasical voc xml格式的标注,识别准确率在95.7% 详情查看地址:https://backend.blog.csdn.net/article/details/144983881
Java项目-基于SSM的进销存管理系统
学术海报模板
该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip,个人大四毕业设计项目、经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip毕业设计基于Python+vue的共享单车时空数据分析与管理系统源码.zip毕业设计基于Pytho
matlab代码资源。基于支持向量机的语音情感识别MATLAB代码。基于支持向量机(SVM)的语音情感识别是一种监督学习技术,它通过在特征空间中寻找最优分割超平面来区分不同情感类别。SVM算法通过最大化分类边界的间隔,提高模型的泛化能力,有效处理高维语音特征数据。这种方法能够识别语音中的情感特征,如快乐、悲伤或愤怒,广泛应用于呼叫中心情感分析和人机交互系统。
单相PET电力电子变压器 输入级单相pwm整流器双闭环控制 输出400V 中间级移相全桥 输出500V 输出级单相逆变器 220交流电 开关频率10k
包含项目论文和毕业答辩PPT,详情请看博客:https://blog.csdn.net/2401_87429224/article/details/144995193 论文主要包括以下内容: 1、中英文摘要; 2、目录; 3、绪论,包括背景、意义、开发工具、国内外现状等; 4、系统分析,包括可行性分析、设计原则、需求分析、业务流程分析等; 5、系统设计,包括功能设计、数据库设计等; 6、系统实现,包括各模块实现; 7、软件测试,包括测试环境、测试条件、运行情况等。
在Android平台上开发一款天气预报应用是一项常见的任务,它涉及到多个技术层面,包括用户界面设计、数据获取、数据解析以及实时更新等。以下是对这个"较简单的天气预报APP"可能涉及的关键知识点的详细解释: 1. **Android Studio**:作为Android应用开发的主要集成开发环境(IDE),Android Studio提供了丰富的工具来帮助开发者编写、调试和发布应用。它内置了Gradle构建系统,使得项目管理和依赖管理更加方便。 2. **布局设计**:UI设计是天气应用的重要部分,通常会使用XML布局文件来定义各个屏幕的组件和布局。例如,可能包含一个用于显示城市名的TextView,一个用于展示当前温度的ImageView,以及用于显示未来几天预报的RecyclerView。 3. **数据获取**:天气信息通常来自于网络API,如OpenWeatherMap或AccuWeather等。开发者需要编写HTTP请求代码,使用像OkHttp或者Retrofit这样的网络库来获。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
云计算的文件,上次漏的
该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
永磁同步电机+SMO滑膜观测算法+simulink仿真
hi3518e-v200 demo
使用WebUI插件,UE与网页发参收参写法; 使用像素流插件,UE与网页发参收参写法。
2种方法SCL编写和CFC编写5个电机逆启顺停的顺控程序 方法一:使用西门子的电机功能块和联锁块编写5个电机逆启顺停的顺控程序 方法二、使用SCL编写逆启顺停的功能块,然后在CFC调用,采用SFC方式连线,构成逆启顺停功能程序