VC++中的ADO宏
来源:互联网 发布:域名如何绑定空间 编辑:程序博客网 时间:2024/05/22 12:57
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宏
- Ado在vc++中的使用
- VC 中的ADO数据库开发
- 学习用VC++中的ADO链接数据库
- VC++ 读取ADO中的自动增长字段
- ADO + VC
- VC ADO
- VC+ADO
- VC ADO
- vc ado
- ado vc++
- VC++.net CLR中的ado.net 操作数据库
- VC中用ADO访问SqlServer中的存储过程
- 如何使用VC+ADO修改access数据库中的字段名
- 《VC++深入详解》中的使用ADO对象连接数据by VC++一例
- VC知识库搜索ADO
- VC(ADO类)
- vc对ado操作
- 拦截Windows消息
- C++字符串完全指南(2) - 各种字符串类- CRT类
- 申请域名基础知识
- 生命是脆弱的-人生最大的挫折
- 最近对Python很感兴趣
- VC++中的ADO宏
- VC常用数据类型使用转换详解
- 极限编程中的测试(自产)
- (转)简说设计模式
- C++字符串完全指南(2) - 各种字符串类- CRT类
- EJB(2.X-3.0)、Hibernate、Spring:剖析、批判和展望
- VC常用数据类型使用转换详解
- faintbear2005年的学习笔记2005-1-4
- Windows 环境下的 PHP5 与 Apache 服务器的配置