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宏相关推荐

  1. VC中的TRACE宏:

    VC中的TRACE宏: TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能:该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调式也在R ...

  2. 在VC中使用ADO开发数据库应用程序

    在VC中使用ADO开发数据库应用程序 一.ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口.ADO 使您能够编写应用程序以通过 ...

  3. VC中利用ADO共同实现数据库的操作

    VC中利用ADO共同实现数据库的操作 ADO是应用层的编程接口,它通过OLE DB提供的COM接口访问数据,它适合于各种客户机/服务器应用系统和基于Web的应用,尤其在一些脚本语言中访问数据库操作是A ...

  4. VC中一个关于宏的使用问题 A2W W2A

    VC中一个关于宏的使用问题 文/赵湘宁 这儿是个关于宏的问题,我曾用过ATL的串转换宏,包括W2A,开始有些东西我还不太明白.为了使用这些宏,必须在函数的开始处用USES_CONVERSION来初始化 ...

  5. VC中使用ADO的方法

    ADO中打开一个连接: pConnection->ConnectionString = "这里的字符串有下面四种写法"; //对连接字符串赋值 pConnection-> ...

  6. 在VC中使用ADO开发一款家庭理财小助手软件

    家庭理财小助手(绿色小软件): 此软件可以实现四个功能:1.对家庭月状况进行统计,并可查询之前某月的财务情况,如需查询2010年10月,可输入:201010,点击查询即可:2.对家庭年状况进行统计,如 ...

  7. VC中ADO连接SQLSERVER的几种标准方式?

    VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看. 正文 一.ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE D ...

  8. VC中的宏 (#define) 与预处理 (#if/#ifdef/#pragma) 的使用方法总结。

    C/C++ 预定义宏 例子:C/C++ 预定义宏的取值 C/C++ 预定义宏用途:诊断与调试输出 CRT 的诊断与调试输出:assert, _ASSERT/_ASSERTE, _RPTn/_RPTFn ...

  9. VC中Windows中一些宏的含义

    https://www.cnblogs.com/zhcncn/archive/2013/05/21/3091052.html 1. _WIN32_WINDOWS,_WIN32_WINNT,WINVER ...

最新文章

  1. Windows 日志高级筛选实践
  2. 中国大陆开源镜像站汇总
  3. Tomcat 7 安装成功,启动后显示空白页问题
  4. SQL Server中的锁的简单学习
  5. 搭建gitlab服务器
  6. 九十一、Python的GUI系列 | QT组件篇
  7. 264标准中高复杂度的三方面
  8. 【汇编语言】王爽第六章程序6.3解答,8086汇编语言实现数据的倒序存放
  9. 软件版本号命名规范_软件发布版本介绍
  10. 收藏:如何实现路由器的本地验证和授权
  11. Nexus6P 设置Debug模式
  12. 疯狂连连看之加载界面的图片
  13. Cocos2d-x 3.2 的内存管理详解
  14. 《集异璧》作者侯世达:王维、杨绛与机器翻译的本质
  15. c# RestClient 请求接口
  16. 全国62个城市建筑轮廓矢量数据
  17. 串口、Modbus通信协议
  18. 微信小程序开发详细步骤是什么?
  19. Go语言学习培训靠谱吗
  20. 世界最大同性交友网站七夕大礼包————remote :Support for password authentication was removed on August 13,

热门文章

  1. rabbitmq php 自动断开,解决RabbitMQ服务启动自动关闭,访问不了问题
  2. python classmethod用处_Python classmethod类方法修饰符
  3. 事件图谱是什么?它能预测未来吗?
  4. 【需求工程】剖析BPMN
  5. 【软件测试】软件测试分类详述
  6. 按字母位置关系给数字排序(洛谷P4414题题解,Java语言描述)
  7. 并非最边界的情况“OK“就真的“OK“(记洛谷P1720WA的经历,Java语言描述)
  8. 【程序设计】浅析编程语言的区间为何常是左闭右开
  9. [js对象]JS入门之Date对象
  10. HP 1218 无线设置