-
Notifications
You must be signed in to change notification settings - Fork 0
/
Ado.h
183 lines (120 loc) · 4.67 KB
/
Ado.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*########################################################################
【文件名】: ado.h
【名 称】: ADO 封装类.
【版 本】: 0.20
【作 者】: 成真
【E-mail】: [email protected]
---------------------------------------------------------
【创建时间】: 20/1/2003 19:08
【修改时间】: 09/4/2003
---------------------------------------------------------
【版本历史】:
[0.20] : 封装了 CAdoCommand 类.
[-15/4/2003-]
[0.11] : 修正了一些 bug.
删除 oleinit() 函数, 因为觉得不妥。
增加了记录集存取函数.
[-09/4/2003-]
[0.10] : 主要包括 CAdoConnection 和 CAdoRecordSet 两个类, 封装了
对ado的常用的操作方法.
[-20/1/2003-]
---------------------------------------------------------
【使用说明】:
1. 必须在下面指明 msado15.dll 的全路径, 一般在 "C:\Program Files\
Common Files\System\ADO\" 目录下.
2. 在使用本类之前必须要初始化 COM 环境, 可以调用 CoInitialize(NULL)
来初始化, 用 CoUninitialize() 释放;
3. 在使用记录集对象前必须先调用 CAdoConnection::Open() 连接数据库,
连接后可给多个 CAdoRecordSet 对象使用, 用完后须关闭数据库.
4. 使用记录集执行SQL语句之前, 要使用构建方法或调用 SetAdoConnection()
关联到连接对象.
5. 在编译过程中不用理会下面的编译警告:
warning: unary minus operator applied to unsigned type, result
still unsigned
如果不想此警告出现,可以在 StdAfx.h 文件中加入这样一行代码以禁止
此警告: #pragma warning(disable:4146)
########################################################################*/
#if !defined(_ANYOU_COOL_ADO_H)
#define _ANYOU_COOL_ADO_H
#if _MSC_VER > 1000
#pragma once
#endif
// 导入 ado 库 -----------------------------------------------------------
#pragma warning(disable:4146)
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")
#pragma warning(default:4146)
using namespace ADODB;
#include <icrsint.h>
class CAdoConnection;
#include "AdoRecordSet.h"
#include "AdoCommand.h"
// 数值类型转换 -----------------------------------
COleDateTime vartodate(const _variant_t& var);
COleCurrency vartocy(const _variant_t& var);
bool vartobool(const _variant_t& var);
BYTE vartoby(const _variant_t& var);
short vartoi(const _variant_t& var);
long vartol(const _variant_t& var);
double vartof(const _variant_t& var);
CString vartostr(const _variant_t& var);
/*########################################################################
------------------------------------------------
CAdoConnection class
------------------------------------------------
########################################################################*/
class CAdoConnection
{
// 构建/析构 ------------------------------------------
public:
CAdoConnection();
virtual ~CAdoConnection();
protected:
void Release();
// 属性 -----------------------------------------------
public:
// 连接对象 ----------------------------------
_ConnectionPtr& GetConnection() {return m_pConnection;};
// 异常信息 ----------------------------------
CString GetLastErrorText();
ErrorsPtr GetErrors();
ErrorPtr GetError(long index);
// 连接字串 ----------------------------------
CString GetConnectionText() {return m_strConnect;}
// 连接信息 ----------------------------------
CString GetProviderName();
CString GetVersion();
CString GetDefaultDatabase();
// 连接状态 ----------------------------------
BOOL IsOpen();
long GetState();
// 连接模式 ----------------------------------
ConnectModeEnum GetMode();
BOOL SetMode(ConnectModeEnum mode);
// 连接时间 ----------------------------------
long GetConnectTimeOut();
BOOL SetConnectTimeOut(long lTime = 5);
// 数据源信息 -------------------------------
_RecordsetPtr OpenSchema(SchemaEnum QueryType);
// 操作 -----------------------------------------------
public:
// 数据库连接 --------------------------------
BOOL Open(LPCTSTR lpszConnect =_T(""), long lOptions = adConnectUnspecified);
BOOL ConnectSQLServer(CString dbsrc, CString dbname, CString user, CString pass, long lOptions = adConnectUnspecified);
BOOL ConnectAccess(CString dbpath, CString pass = _T(""), long lOptions = adConnectUnspecified);
BOOL OpenUDLFile(LPCTSTR strFileName, long lOptions = adConnectUnspecified);
void Close();
// 处理 -----------------------------------------------
public:
// 事务处理 ----------------------------------
long BeginTrans();
BOOL RollbackTrans();
BOOL CommitTrans();
// 执行 SQL 语句 ------------------------------
_RecordsetPtr Execute(LPCTSTR strSQL, long lOptions = adCmdText);
BOOL Cancel();
// 数据 -----------------------------------------------
protected:
CString m_strConnect;
_ConnectionPtr m_pConnection;
};
#endif // !defined(_ANYOU_COOL_ADO_H)