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宏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台湾大学林轩田机器学习技法课程学习笔记3
- 下一篇: 阿里程序员转行公务员,工资少了40万,只