1.引入msado.dll动态库

添加以下代码到*.cpp文件或者添加到*.h头文件(该头文件要被*.cpp文件引用),编译一次,自动生成msado15.tlh和msado15.tli文件

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

2.建立数据库交互类(使用面向过程编程可以将函数独立出来,类的私有成员可以设置成全局变量)

class CONN_DB
{
public:void OnInitADOConn();//连接数据库_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);//执行查询,返回记录集BOOL ExecuteSQL(_bstr_t bstrSQL);//执行SQL语句,不更新数据集的内容void ExitConnect();//断开连接void Check();
private:_ConnectionPtr m_pConnection;//数据库连接指针,指向数据库_RecordsetPtr m_pRecordset;//记录集,返回查询结果
};

3.连接数据库函数(代码以MSSQL为例,其他数据连接连接字符串上有差异)

void CONN_DB::OnInitADOConn()
{::CoInitialize(NULL);//初始化OLE/COM库环境try{m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象_bstr_t strConnect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名;Data Souese=.";//连接字符串m_pConnection->Open(strConnect, "", "", adModeUnknown);//打开本地数据库}catch (_com_error e){std::cout << e.Description() << std::endl;}
}

Oracle数据库

Provider=OraOLEDB.Oracle;DATA SOURCE=ORCL;USER ID=system;PASSWORD=密码;//ORCL为数据库名,system为用户名

MySQL(首先需打开ODBC数据源(64位)新建名为MysqlODBC的DSN)

m_pConnection->Open("DSN=MysqlODBC;server=localhost;database=数据库名", "root", "密码", adModeUnknown);
m_pConnection->CursorLocation = adUseClient;//与客户端游标有关,否则无法返回记录条数

3.操作数据库(查询)并返回结果

_RecordsetPtr& CONN_DB::GetRecordSet(_bstr_t bstrSQL)
{try{if (m_pConnection == NULL)OnInitADOConn();m_pRecordset.CreateInstance(__uuidof(Recordset));//创建记录集m_pRecordset->Open(bstrSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);//使用adOpenStatic,可以调用记录集指针的函数返回记录个数}catch (_com_error e){std::cout << e.Description() << std::endl;}return m_pRecordset;
}

4.执行SQL语句(插入、更新、删除等),不返回结果

BOOL CONN_DB::ExecuteSQL(_bstr_t bstrSQL)
{try{if (m_pConnection == NULL)OnInitADOConn();m_pRecordset = m_pConnection->Execute(bstrSQL, NULL, adCmdText);return TRUE;}catch (_com_error e){std::cout << e.Description() << std::endl;return FALSE;}
}

5.断开连接

void CONN_DB::ExitConnect()
{if (m_pRecordset != NULL)m_pRecordset->Close();//关闭记录集m_pConnection->Close();//断开连接::CoUninitialize();//释放环境
}

6.检查连接状态

void CONN_DB::Check()
{if (m_pConnection->State == adStateOpen)std::cout << "连接成功" << std::endl;elsestd::cout << "未连接" << std::endl;
}

ADO连接并访问数据库(MSSQL、Oracle、MySQL等)相关推荐

  1. 使用ADO或ADO控件访问数据库

    目录: 1.数据库的基础知识以及创建Access数据库 2.数据库的接口 3.使用ADO或ADO控件访问数据库 上篇文章,为大家讲解了数据库的接口,大家对ADO也有了较为基础的了解,这篇文章主要解决大 ...

  2. tomcat 配置 quercus记录:php使用连接池访问数据库

    安装好 quercus报错:  D:\apache-tomcat-5.5.27\webapps\wfx\conn\mysql.php:9: Warning: A link to the server ...

  3. 使用ADO.NET技术访问数据库——数据库操作类

    ADO.NET技术是数据库访问的一个重要方法. 它常用的五个对象分别是:1.Connection2.Command3.DatadAdapter4.DataSet5.DataReader 1.Conne ...

  4. oracle精简版_使用Entity Framework Core访问数据库(Oracle篇)

    前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架  终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...

  5. 使用Entity Framework Core访问数据库(Oracle篇)

    前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架  终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...

  6. 【Spring】使用数据源连接池访问数据库

    Spring并没有提供数据源连接池实现,但是可以选择其他开源的实现: Apache Commons DBCP ( http://jakarta.apache.org/commons/dbcp[reti ...

  7. VC++使用ADO连接SQL Server数据库

    基本步骤: 1.创建一个基于对话框的应用程序ADODatabase. 2.创建一个用来连接的ADO类库.系统菜单中Insert->New Class项,class type选择Generic C ...

  8. liferay mysql driver_Liferay更改数据库(oracle,mysql)

    Liferay默认是使用HSQL这个数据库,如果要在项目中使用其他的数据库,应该做如下相关设定. 以ORACLE为例. 下载Liferay Oracle 10g的数据库文件.下载地址为 http:// ...

  9. Python 连接Sql Server数据库 MSSql

    Python 想要和MSSql数据库进行交互,首先要下载名为"pymssql"的包,然后import该包即可. 地址:https://pypi.python.org/pypi/py ...

最新文章

  1. UVa1153 Keep The Customer Satisfied(贪心)
  2. iptables连接跟踪ip_conntrack
  3. matlab 读取WAV文件
  4. RxJava 2.x 入门
  5. 面试必问之【数组】篇
  6. 使用腾讯云短信服务技术出现FailedOperation.TemplateIncorrectOrUnapproved
  7. mybatis 中 foreach collection的三种用法
  8. java分布式对象——远程方法中的参数和返回值+远程对象激活
  9. 物联网时代会给我们带来怎么样的改变?
  10. springmvd接收参数问题
  11. java里的多线程同步机制
  12. 没有主清单属性_梦幻西游电脑版:神威组第一大唐?大佬两天更新200W硬件,这身属性难被超越!太狠了...
  13. Lumen开发:结合Redis实现消息队列(3)
  14. Winows Phone 7 不温不火学习之《音乐播放示例》
  15. PotPlayer和MPC-HC挂载VSFilterMod加载外挂特效字幕的方法
  16. mqdf python_GitHub - jugg1024/court_recognition
  17. JAVA萌新学习day17.18天 数据库MySQL
  18. 以世界杯为主题的营销活动|运营策略
  19. windows ubuntu 大华直连抓图
  20. 05_CAP与BASE原理

热门文章

  1. C系列(1)----C语言基本概念
  2. n个小球放入m个盒子中_n个球放入m个盒子的几种情形讨论
  3. linux分区不格式化能挂栽吗,linux硬盘分区、格式化与挂载
  4. 深眸科技专注机器视觉的研发与创新,开启工业自动化、智能化进程
  5. only whitespace content allowed before start tag and not
  6. SSM+基于SSM的课堂考勤管理系统的设计与实现 毕业设计-附源码191617
  7. 项目实战|C#Socket通讯方式改造(一)--Socket实现Ftp的上传和下载
  8. 超级消防员!工地现场又告急!!
  9. 大师兄Smarty教程-阅读笔记
  10. 企业境外上市和境内上市的区别