小标
2018-12-14
来源 :
阅读 1383
评论 0
摘要:本文主要向大家介绍了VC编程之MFC使用ADO连接数据库的类,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
本文主要向大家介绍了VC编程之MFC使用ADO连接数据库的类,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

MFC使用ADO连接数据库的类下面是代码
[cpp] view plain copy
1.#include "StdAfx.h"
2.
3.#include "ADOConnect.h"
4.
5.//////////////////////////////////////////////////////////////////////
6.// StdAfx.h中加入 #import "E:\vs2008\BuildNcProgram\BuildNcProgram\dll\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF") //导入ADO动态连接库
7.//
8.//////////////////////////////////////////////////////////////////////
9.CAdoConnect::CAdoConnect(const CString& szConnectStr)
10.:m_szConnectStr(szConnectStr)
11., m_szServer(_T(""))
12., m_szDATABASE(_T(""))
13., m_szUID(_T(""))
14., m_szPWD(_T(""))
15., m_nPort(1433)
16.{
17. ::CoInitialize(NULL); //初始化OLE/COM库环境
18.}
19.CAdoConnect::CAdoConnect(const CString& Server
20. , const CString& DATABASE
21. , const CString& UID
22. , const CString& PWD
23. , const int nPort
24. )
25. : m_szServer(Server)
26. , m_szDATABASE(DATABASE)
27. , m_szUID(UID)
28. , m_szPWD(PWD)
29. , m_szConnectStr(_T(""))
30. , m_nPort(nPort)
31.{
32. m_szConnectStr.Empty();
33. ::CoInitialize(NULL); //初始化OLE/COM库环境
34.}
35.
36.
37.CAdoConnect::~CAdoConnect(void)
38.{
39. //关闭记录集和连接
40. if (m_pRecordset != NULL)
41. {
42. if (m_pRecordset->GetState() == adStateOpen)
43. {
44. m_pRecordset->Close();
45. }
46. if (m_pRecordset)
47. {
48. m_pRecordset.Release();
49. m_pRecordset = NULL;
50. }
51. }
52.
53.
54. if (m_pConnection != NULL)
55. {
56. if (m_pConnection->GetState() == adStateOpen)
57. {
58. m_pConnection->Close();
59. }
60. m_pConnection.Release();
61. m_pConnection = NULL;
62. }
63.
64. ::CoUninitialize(); //释放程序占用的COM资源
65.}
66.
67.// 连接数据库
68.BOOL CAdoConnect::OnInitAdoConnection(void)
69.{
70. try
71. {
72. HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");//创建Connection 对象
73. if (SUCCEEDED(hr))
74. {
75. m_pConnection->CursorLocation = adUseServer;
76.
77. // "Provider=SQLOLEDB.1;Server=数据库IP地址;UID=sa;PWD=你的sa登陆密码;DATABASE=数据库名称;";
78. //_bstr_t strConnect = "driver={SQL Server};Server=192.168.0.117;DATABASE=TEST;UID=uid;PWD=passward;";
79. CString szStr;
80. if (m_szConnectStr.IsEmpty())
81. {
82. szStr.Format(_T("driver={SQL Server};Server=%s,%d;DATABASE=%s;UID=%s;PWD=%s;")
83. , m_szServer, m_nPort, m_szDATABASE, m_szUID, m_szPWD);
84. }
85. else
86. {
87. szStr = m_szConnectStr;// = "driver={SQL Server};Server=localhost;DATABASE=EOSDB;UID=sa;PWD=12345;";
88. }
89. //szStr = m_szConnectStr = "driver={SQL Server};Server=127.0.0.1,1433;DATABASE=EOSDB;UID=sa;PWD=12345;";
90.
91. _bstr_t strConnect = szStr;
92. // "driver={SQL Server};Server=数据库IP地址;DATABASE=数据库名称;UID=sa;PWD=你的sa登陆密码;";
93. HRESULT hr = m_pConnection->Open(strConnect, "", "", adModeUnknown);
94. if (SUCCEEDED(hr))
95. {
96. return TRUE;
97. }
98. else
99. {
100. AfxMessageBox("建立数据库连接失败!");
101. return FALSE;
102. }
103. }
104. }
105. catch (_com_error e)
106. {
107. AfxMessageBox(e.Description());//显示错误信息
108. return FALSE;
109. }
110. catch (...)
111. {
112. return FALSE;
113. }
114.
115. return TRUE;
116.}
117.
118.// 执行Insert UpDate
119.BOOL CAdoConnect::ExecuteSQL(_bstr_t bstrSQL, long lOptions)
120.{
121. try
122. {
123. //是否已经连接到数据库
124. if (m_pConnection == NULL)
125. {
126. OnInitAdoConnection();
127. }
128. m_pRecordset = m_pConnection->Execute(bstrSQL, NULL, lOptions);
129. return TRUE;
130. }
131. catch (_com_error e)
132. {
133. AfxMessageBox(e.Description());
134. return FALSE;
135. }
136. catch (...)
137. {
138. return FALSE;
139. }
140.}
141.
142.
143.//执行查询
144._RecordsetPtr& CAdoConnect::GetRecordSet(_bstr_t bstrSQL)
145.{
146. try
147. {
148. //连接数据库 如果Connection对象为空则重新连接数据库
149. if (m_pConnection == NULL)
150. {
151. OnInitAdoConnection();
152. }
153. //创建记录集对象
154. HRESULT hr = m_pRecordset.CreateInstance(__uuidof(Recordset));
155. //取得表中的记录
156. if (SUCCEEDED(hr))
157. {
158. m_pRecordset->Open(bstrSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
159. }
160. }
161. catch (_com_error e)
162. {
163. //异常 显示错误信息
164. AfxMessageBox(e.Description());
165. }
166. return m_pRecordset;
167.}#pragma once
168.//#import "E:\vs2008\BuildNcProgram\BuildNcProgram\dll\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF") //导入ADO动态连接库
169.#import "c:\Program Files\Common Files\System\ado\msado15.dll"no_namespace \
170. rename("EOF", "adoEOF")rename("BOF", "adoBOF")
171.class CAdoConnect
172.{
173.private:
174. CString m_szConnectStr;
175. CString m_szServer;
176. CString m_szDATABASE;
177. CString m_szUID;
178. CString m_szPWD;
179. int m_nPort;
180.private:
181. _ConnectionPtr m_pConnection; // 连接对象指针
182. _RecordsetPtr m_pRecordset; // 记录集对象指针
183.
184.public:
185. CAdoConnect(const CString& szConnectStr);
186. CAdoConnect(const CString& Server
187. , const CString& DATABASE
188. , const CString& UID
189. , const CString& PWD
190. , const int nPort = 1433
191. );
192. virtual~CAdoConnect(void);
193.
194.public:
195. // 连接数据库
196. BOOL OnInitAdoConnection(void);
197. // 执行Insert UpDate
198. BOOL ExecuteSQL(_bstr_t bstrSQL, long lOptions = adCmdText);
199. // 执行查询得到记录集
200. _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
201.
202. // 操作符重载
203.public:
204. _RecordsetPtr& operator->()
205. {
206. return m_pRecordset;
207. }
208.};
以上就介绍了VC/MFC的学习,希望对VC/MFC有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言VC/MFC频道!
喜欢 | 1
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号