ADO访问数据库

大致操作过程:

_Connectionptr : CreateInstance , Open , ... Close , Realse

_CommandPtr : CreateInstance , ActiveConnection , CommandText , Excute , ... Close , Realse

_RecordsetPtr : CreateInstance , GetCollect 、Move(MoveNext,MoveFirst)、AddNew、PutCollect、Update , ... Close , Realse

ODBC方式链接。

1、应用程序的stdafx.h头文件中(也可以在其他合适的地方)包含如下语句。

#import "C://program files//commonfiles//system//ado//msado15.dll" no_namespacerename ("EOF","adoEOF")

2、链接数据库

CoInitialize(NULL);                                          //初始化Com组件
_ConnectionPtr conPtr;                                      //数据库链接指针
     //conPtr.CreateInstance("ADODB.Connection");           //Connection用于与数据库服务器的链接
     conPtr.CreateInstance(__uuidof(Connection));            //Connection用于与数据库服务器的链接另一种方式
     /******************连接数据库********************/
     try
     {
         conPtr->ConnectionTimeout = 5;                          //设置连接时间
         // MySqlTest为数据源名 localhost表示本地root表示用户名 sa表示密码
         //链接方式1,使用这种方式链接时要注意在设置数据源时一定要选择一个数据库
         //conPtr->Open("DSN=MySqlTest;server=localhost;","root","sa",adModeUnknown);///连接MySql数据库(测试成功)
         //链接方式2采用这种方式链接时在创建数据源时没有必要选择一个数据库          conPtr->Open("DSN=MySqlTest;server=localhost;database=test;","root","sa",adModeUnknown);///连接MySql数据库(测试成功)
     }
     catch(_com_error e)                                              //捕捉异常
     {
         AfxMessageBox(e.ErrorMessage());
     } 
     CoUninitialize();                                       //释放com组件//不知是否有必要

3、访问数据库

_RecordsetPtr recordPtr;//数据集指针
recordPtr.CreateInstance(__uuidof(Recordset));
CString cmdStr=_T("selectname,stuno from student");//student为表名 该表中有两个字段name(字符型)stuno(int型)
     try
     {
              recordPtr->Open(_variant_t(cmdStr),
              conPtr.GetInterfacePtr(), 
              adOpenDynamic, 
              adLockOptimistic, 
              adCmdText); 
     }
     catch(_com_error e)
     {
         AfxMessageBox(e.Description());
     }
     while(!(recordPtr->adoEOF))
     {//获取记录
         CStringname=(CString)recordPtr->GetCollect(_variant_t("name")).bstrVal;
         intno=recordPtr->GetCollect(_variant_t("stuno")).intVal;
         recordPtr->MoveNext();
     }
     recordPtr->Close();//关闭记录集
     recordPtr.Release();//释放空间
     conPtr->Close();//关闭连接
     conPtr.Release();//释放空间

非ODBC方式链接。

链接数据库

CoInitialize(NULL);                                          //初始化Com组件
_ConnectionPtr conPtr;                                       //数据库链接指针
     //conPtr.CreateInstance("ADODB.Connection");            //Connection用于与数据库服务器的链接
     conPtr.CreateInstance(__uuidof(Connection));            //Connection用于与数据库服务器的链接另一种方式
// MySQL ODBC 5.1 Driver为驱动名称(取决于我们为MySql安装的驱动),localhost为服务器地址,test为数据库名,root为用户名(MySql默认用户名为root),sa为密码
     CStringconStr=_T("Driver={MySQL ODBC 5.1 Driver };Server= localhost;Database=test;");
     /******************连接数据库********************/
     try
     {
         conPtr->ConnectionTimeout = 5;                          //设置连接时间
         conPtr->Open((_bstr_t)conStr, _T("root"),_T("sa"), adModeUnknown);
     }
     catch(_com_error e)                                              //捕捉异常
     {
         AfxMessageBox(e.ErrorMessage());
     } 
     CoUninitialize();                                       //释放com组件

获取记录集

获取记录集的方式与ODBC方式相同

只要是在自己的电脑上对udl进行了连接测试成功后,在用记事本(如若不行,直接把文件的扩展名udl改成txt)打开这个文件,你会发现里面就写着自己电脑的数据库连接字符串!!!这都是网上别人的成果!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jerry的SAP技术分享

使用jMeter构造大量并发HTTP请求进行微服务性能测试

创建一个新的Thread Group,下图意思是这个工程会使用3个线程同时发请求,每个请求执行一次。

3395
来自专栏蓝天

三种web性能压力测试工具http_load webbench ab小结

题记:压力和性能测试工具很多,下文讨论的是我觉得比较容易上手,用的比较多的三种 http_load 下载地址:http://www.acme.com/sof...

581
来自专栏菩提树下的杨过

aspx超时问题容易忽略的细节

一个刚上线不久的web项目(internet环境),里面有大文件上传功能,前一阵一直运行得蛮好的,昨天觉得运行比较稳定后,把debug=true改成false,...

1718
来自专栏跟着阿笨一起玩NET

基础才是重中之重~用好configSections让配置信息更规范

对于小型项目来说,配置信息可以通过appSettings进行配置,而如果配置信息太多,appSettings显得有些乱,而且在开发人员调用时,也不够友好,节点名...

321
来自专栏大内老A

谈谈IE针对Ajax请求结果的缓存

在默认情况下,IE会针对请求地址缓存Ajax请求的结果。换句话说,在缓存过期之前,针对相同地址发起的多个Ajax请求,只有第一次会真正发送到服务端。在某些情况下...

1685
来自专栏岑玉海

hbase源码系列(七)Snapshot的过程

  在看这一章之前,建议大家先去看一下snapshot的使用。可能有人会有疑问为什么要做Snapshot,hdfs不是自带了3个备份吗,这是个很大的误区,要知道...

2846
来自专栏逸鹏说道

探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)

其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/d...

2735
来自专栏Ryan Miao

SpringCloud学习2-Springboot监控模块(actuator)

前言 学习一项新技术最大的困难是什么? 是资料。让人高兴的是找到了一本系统学习Spring Cloud的教程,《Spring Cloud微服务实战》, 接下来的...

1.1K11
来自专栏沈唁志

PHP中常用的header头

1323
来自专栏PhpZendo

深入浅出 Laravel 的 Facade 外观系统

本文将从以下几个方面出发,全面讲解 Laravel 中 Facade 的运行原理,为了便于理解后续中所有 Facade 译作「外观」:

390

扫描关注云+社区