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 条评论
登录 后参与评论

相关文章

来自专栏安富莱嵌入式技术分享

【RL-TCPnet网络教程】第40章 RL-TCPnet之TFTP客户端(精简版)

本章节为大家讲解RL-TCPnet的TFTP客户端应用,学习本章节前,务必要优先学习第38章的TFTP基础知识。有了这些基础知识之后,再搞本章节会有事半功倍的效...

521
来自专栏散尽浮华

Linux系统下的用户密码设定梳理

随着linux使用的普遍,对于linux用户以及系统的安全要求越来越高,而用户密码复杂程度是系统安全性高低的首要体现。因此如何对linux下用户的密码进行规则限...

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

Flash/Flex学习笔记(53):利用FMS快速创建一个文本聊天室

先来看客户端fla的构成: 第一帧:登录界面 ? 第一帧的代码: import flash.events.MouseEvent; import com.adob...

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

java学习:jdbc连接示例

java中最常用的数据库连接技术就是JDBC。 目前几乎所有的主流数据库都提供了相应的jdbc驱动,可以简单理解为.net中的数据库客户端dll,.net中如果...

1937
来自专栏耕耘实录

使用命令清除CentOS7中的特定主机名

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

933
来自专栏Linux驱动

第1阶段——uboot分析之硬件初始化start.S(4)

分析uboot第一个执行函数_start(cpu/arm920t/start.S)  打开cpu/arm920t/start.S 1 .globl _start...

2068
来自专栏IT笔记

JAVA实现的微信扫描二维码支付

吐槽一下 支付项目采用springMvc+Dubbo架构实现,只对外提供接口。 话说,为什么微信支付比支付宝来的晚了那么一点,一句话,那一阵挺忙的,然后就没有时...

1K7
来自专栏刘望舒

Android系统启动流程(四)Launcher启动过程与系统启动流程

前言 此前的文章我们学习了init进程、Zygote进程和SyetemServer进程的启动过程,这一篇文章我们就来学习Android系统启动流程的最后一步:L...

2128
来自专栏以南小隐-数通那些事儿

锐捷设备主程序下升级方法

1514
来自专栏Rainbond开源「容器云平台」

Docker源码分析之容器日志处理与log-driver实现

1343

扫码关注云+社区