VC++中的ADO宏
VC++中的ADO宏
在VC++中一般使用ADO(Active Database Object) 进行数据库编程,由于函数调用中需要设置很多参数,不如VB中使用简单。实际编程中大部分参数实际都设置为一样的,处理方法也一样。笔者就将ADO对象(Connection、Recordset、Command)等的常见用法封装为宏(xOpenRecordset、xConnect、xDisconnect、xExecute、xCmdExecute)。只需在stdafx.h中加入如下文件,就可以大大减少编程工作量。
//文件名:db.h
//ADO数据库宏
//日期:08-10-2003
#if !defined(_DB_H)
#define _DB_H
#include "icrsint.h"
//根据实际路径修改
#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","EndOfFile")
//数据库连接参数结构
struct Database
{
CString strUserName; //User's ID
CString strPassword; //User's password
CString strServer; //Name of database server
CString strDBName; //Name of database
};
typedef Database *pDatabase;
//打开记录集
#define xOpenRecordset(/*_RecordsetPtr*/ rs, /*_ConnectionPtr*/ cn,/*_bstr_t*/ bt) /
HRESULT hr_rs=S_OK;/
hr_rs=rs.CreateInstance(__uuidof(Recordset));/
ASSERT(SUCCEEDED(hr_rs));/
hr_rs=rs->Open(bt,cn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);/
ASSERT(SUCCEEDED(hr_rs));
//执行SQL语句
#define xExecute(/*_ConnectionPtr*/ cn,/*_bstr_t*/ bt) /
cn->Execute(bt,NULL,adExecuteNoRecords);
//连接数据库
//如果为非SQL Server数据库,请自行修改连接字符串
#define xConnect(/*_ConnectionPtr*/ cn, /*Database*/ database) /
_bstr_t bt_cn;/
HRESULT hr_cn=S_OK;/
bt_cn=(_bstr_t)"Provider=SQLOLEDB.1;Persist Security Info=False;User ID="+(_bstr_t)database.strUserName+(_bstr_t)";Password="+(_bstr_t)database.strPassword+(_bstr_t)";Initial Catalog="+(_bstr_t)database.strDBName+(_bstr_t)";Data Source="+(_bstr_t)database.strServer;/
CoInitialize(NULL); /
hr_cn=cn.CreateInstance(__uuidof(Connection));/
ASSERT(SUCCEEDED(hr_cn));/
hr_cn=cn->Open (bt_cn,_bstr_t(""),_bstr_t(""),adModeUnknown);/
ASSERT(SUCCEEDED(hr_cn));
//断开数据库
#define xDisconnect(/*_ConnectionPtr*/ cn) /
cn->Close ();/
CoUninitialize();
//执行Command命令
#define xCmdExecute(/*_CommandPtr*/ cmd,/*_RecordsetPtr*/ rs,/*_ConnectionPtr*/ cn,/*_bstr_t*/ bt) /
HRESULT hr_cmd=S_OK;/
hr_cmd=cmd.CreateInstance(__uuidof(Command));/
ASSERT(SUCCEEDED(hr_cmd));/
hr_cmd=rs.CreateInstance(__uuidof(Recordset));/
ASSERT(SUCCEEDED(hr_cmd));/
cmd->CommandText =bt;/
cmd->CommandType = adCmdText;/
cmd->ActiveConnection =cn;/
rs=cmd->Execute (NULL,NULL,adCmdText );
//end of file
#endif
VC++中的ADO宏相关推荐
- VC中的TRACE宏:
VC中的TRACE宏: TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能:该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调式也在R ...
- 在VC中使用ADO开发数据库应用程序
在VC中使用ADO开发数据库应用程序 一.ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口.ADO 使您能够编写应用程序以通过 ...
- VC中利用ADO共同实现数据库的操作
VC中利用ADO共同实现数据库的操作 ADO是应用层的编程接口,它通过OLE DB提供的COM接口访问数据,它适合于各种客户机/服务器应用系统和基于Web的应用,尤其在一些脚本语言中访问数据库操作是A ...
- VC中一个关于宏的使用问题 A2W W2A
VC中一个关于宏的使用问题 文/赵湘宁 这儿是个关于宏的问题,我曾用过ATL的串转换宏,包括W2A,开始有些东西我还不太明白.为了使用这些宏,必须在函数的开始处用USES_CONVERSION来初始化 ...
- VC中使用ADO的方法
ADO中打开一个连接: pConnection->ConnectionString = "这里的字符串有下面四种写法"; //对连接字符串赋值 pConnection-> ...
- 在VC中使用ADO开发一款家庭理财小助手软件
家庭理财小助手(绿色小软件): 此软件可以实现四个功能:1.对家庭月状况进行统计,并可查询之前某月的财务情况,如需查询2010年10月,可输入:201010,点击查询即可:2.对家庭年状况进行统计,如 ...
- VC中ADO连接SQLSERVER的几种标准方式?
VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看. 正文 一.ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE D ...
- VC中的宏 (#define) 与预处理 (#if/#ifdef/#pragma) 的使用方法总结。
C/C++ 预定义宏 例子:C/C++ 预定义宏的取值 C/C++ 预定义宏用途:诊断与调试输出 CRT 的诊断与调试输出:assert, _ASSERT/_ASSERTE, _RPTn/_RPTFn ...
- VC中Windows中一些宏的含义
https://www.cnblogs.com/zhcncn/archive/2013/05/21/3091052.html 1. _WIN32_WINDOWS,_WIN32_WINNT,WINVER ...
最新文章
- Windows 日志高级筛选实践
- 中国大陆开源镜像站汇总
- Tomcat 7 安装成功,启动后显示空白页问题
- SQL Server中的锁的简单学习
- 搭建gitlab服务器
- 九十一、Python的GUI系列 | QT组件篇
- 264标准中高复杂度的三方面
- 【汇编语言】王爽第六章程序6.3解答,8086汇编语言实现数据的倒序存放
- 软件版本号命名规范_软件发布版本介绍
- 收藏:如何实现路由器的本地验证和授权
- Nexus6P 设置Debug模式
- 疯狂连连看之加载界面的图片
- Cocos2d-x 3.2 的内存管理详解
- 《集异璧》作者侯世达:王维、杨绛与机器翻译的本质
- c# RestClient 请求接口
- 全国62个城市建筑轮廓矢量数据
- 串口、Modbus通信协议
- 微信小程序开发详细步骤是什么?
- Go语言学习培训靠谱吗
- 世界最大同性交友网站七夕大礼包————remote :Support for password authentication was removed on August 13,
热门文章
- rabbitmq php 自动断开,解决RabbitMQ服务启动自动关闭,访问不了问题
- python classmethod用处_Python classmethod类方法修饰符
- 事件图谱是什么?它能预测未来吗?
- 【需求工程】剖析BPMN
- 【软件测试】软件测试分类详述
- 按字母位置关系给数字排序(洛谷P4414题题解,Java语言描述)
- 并非最边界的情况“OK“就真的“OK“(记洛谷P1720WA的经历,Java语言描述)
- 【程序设计】浅析编程语言的区间为何常是左闭右开
- [js对象]JS入门之Date对象
- HP 1218 无线设置