VC编程之MFC使用ADO连接数据库的类
小标 2018-12-14 来源 : 阅读 1383 评论 0

摘要:本文主要向大家介绍了VC编程之MFC使用ADO连接数据库的类,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍了VC编程之MFC使用ADO连接数据库的类,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

VC编程之MFC使用ADO连接数据库的类

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
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved