Visual C++中的ADO编程

告别封号!雷电模拟器玩《刺激战场》的5个防检测冷技巧 本文深度解析了FPS手游《刺激战场》的反作弊检测机制,并针对雷电模拟器提供了实战对抗策略。通过剖析传感器、触控、系统属性等多维度检测原理,文章重点分享了利用雷电模拟器多开器进行设备指纹伪装、环境配置以及行为拟人化等5个核心防检测技巧,旨在帮助玩家安全稳定地使用模拟器进行游戏,有效规避账号风险。 阅读详情

 

  要:本文介绍了微软推出的以ActiveX技术为基础的ADO数据存取技术,分析了ADO的工作原理,并用Visual C++说明了ADO数据访问技术的实现方法。

关键字:ADO;连接对象;OLE DB;数据存取;记录集

 

ADO(ActiveX Date Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术ADO技术基于COM(Component Object Model),具有COM组件的诸多优点,可以用来构造可复用应用框架,被多种语言支持,能够访问包括关系数据库、非关系数据库及所有的文件系统。另外,ADO还支持各种客户/服务器模块与基于Web的应用程序,具有远程数据服务RDS(Remote Data Service)的特性,是远程数据存取的发展方向。

 

1  ADO的工作原理

ADO封装了OLE DB所提供的接口,是基于OLE DB模型之上的更高层应用,比起OLE DB提供者,ADO的接口可以使程序员在更高级别上同数据交互,并且保留了MFC/ODBC和DAO的特性。ADO技术不仅可以应用于关系数据库,也可以应用于非关系数据库。可以用统一的方法对不同的文件系统进行访问,大大简化了程序编制,增加了程序的可移植性。

1.1 ADO的对象

ADO接口是基于对象集合的,通常比OLE DB对象使用简单。ADO对象不依靠对象层次,大多数情况下,可以简单地创建并只使用需要处理的对象,而不必担心创建许多其他的“父”对象。

1.2 ADO编程模型[3]

ADO中的编程模型一般由一个动作序列组成。ADO提供了一组类,可以简化在C++代码中建立这种序列的处理。

1)接到一个数据源。

2)定对该数据源的一个查询。

3)执行该查询。

4)把查询数据检索到一个能够在C++代码中很容易访问的对象中。

5)如果需要,则更新该数据源,以反映对该数据的编辑。

6)提供检测错误的一般方法。

一般来说,我们需要使用上面提到的ADO编程模型中的所有步骤。但是ADO具有很大的灵活性,根据需要也可以只使用模型中的一部分。例如,我们可以创建一个新的记录集对象,并在代码中为其赋值,不必连接到某个数据源,也不必执行任何查询语句,甚至还可以把记录集对象传送给其它过程或应用程序。

2         Visual C++开发ADO应用程序

使用Visual C++6.0为开发ADO应用程序而提供的动态链接库来开发数据库应用程序,可以灵活地控制应用程序。在进行ADO编程之前我们先建立一个Access数据库MyProject.mdb。

Visual C++中ADO编程的基本步骤和具体方法。

1)生成应用程序框架并初始化OLE/COM库环境  

我们可以使用AfxOleInit()来初始化OLE/COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,代码如下:

BOOL CADOTestInstance() { AfxOleInit();…}

2)引入ADO库文件

Visual C++中通过在程序中使用预编译指令#import来告诉编译器将此指令中指定的动态链接库引入工程中,并从动态链接库中取出其中的对象和信息,产生msado15.tlh和ado15.tli两个头文件来定义ADO库。

stdafx.h中加入如下语句:

 #import

"c:/program files/common files/system/ado/msado15.dll"

no_namespace

 rename("EOF","adoEOF")
   
程序的第三行指示ADO对象不使用名称空间。在有些应用程序中,由于应用程序中的对象与ADO中的对象之间可能会出现命名冲突,所以有必要使用名称空间。如果要使用名称空间,则可把第三行程序修改为: rename_namespace("AdoNS")。第四行代码将ADO中的EOF(文件结束)更名为adoEOF,以避免与定义了自己的EOF的其他库冲突。  

值得注意的是您的环境中msado15.dll不一定在这个目录下,请按实际情况修改。另外,在编译的时候可能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。

msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned

3)创建ADO与数据源的连接

ADO与数据源的连接是通过连接智能指针来创建的。

首先我们需要添加一个指向Connection对象的指针,然后调用CreateInstance()来创建一个连接对象的实例,再调用Open()函数来创建与数据源的连接。

创建ADO的连接,首先要设置ADO连接对象的ConnectionString属性,该属性提供所要连接的数据库类型、数据所处服务器、要访问的数据库和数据库访问的安全认证信息。比较专业的方法是在ConnectionString中直接提供以上信息。其大致过程如下:

_ConnectionPtr m_pConnection;

 m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象

m-pConnection->Open ("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=MyProject.mdb","","",adModeUnknown);//连接数据库

在这段代码中我们是通过Connection对象的Open方法来进行连接数据库的,下面是该方法的原型:

HRESULT Connection15::Open(_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options )

其中,ConnectionString为连接字串,UserID是用户名, Password是登陆密码。

可以看出上述的连接属性设置标准随着数据源的类型不同而变化,软件用户常常不习惯这种设置方式,都希望有可视化的数据源设置方法。为此Microsoft提供了通用数据连接文件(.UDL)来建立和测试ADO连接属性,可以和ODBC一样可视化地定义要连接的数据源,从而实现数据访问的透明性。ADO连接对象可以很方便地使用UDL文件来连接数据源,下面的例子使用mydata.udl来创建ADO连接。

_ConnectionPtr m_pDBConnect;

m_pDBConnect.CreateInstance(__uuidof(Connection));

m_pDBConnect->ConnectionString ="File Name=c:/mydir/mydata.udl";

m_pDBConnect->Open("","","",NULL);

这样一来无论数据源如何变化,在软件中都可以用统一的方法编程。当数据源改变时,只要双击相应的udl文件即可可视化地设置数据源,无需更改软件。

在你所想创建UDL文件的目录中单击右键,选择新建|Microsoft 数据连接,然后将新创建的UDL文件更改为你所希望的文件名(.UDL扩展名不能改变)。如果操作系统是Windows 2000,先创建一个文本文件,再将该文本文件的扩展名改为 "udl",然后双击所创建的UDL文件,即可视化地完成数据源的设定。

4)执行SQL命令并取得结果记录集

为了取得结果记录集,我们定义一个指向Recordset对象的指针,并为其创建Recordset对象的实例:

_RecordsetPtr m_pRecordset;

m_pRecordset.CreateInstance("ADODB.Recordset");

ADO中,可以有两种不同的方法执行命令,第一种是调用连接对象的Execute()函数,第二种是使用命令对象,这种方法可以用于更复杂的命令处理和使用参数化命令,下面我们逐一进行阐述

     利用Connection对象的Execute方法执行SQL命令

Execute方法的原型如下所示:

_RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options )

其中,CommandText是命令字串,通常是SQL命令。参数RecordsAffected是操作完成后所影响的行数, 参数Options表示CommandText中内容的类型,Options可以取如下值之一:

adCmdText:表明CommandText是文本命令

adCmdTable:表明CommandText是一个表名

adCmdProc:表明CommandText是一个存储过程

adCmdUnknown:未知

Execute执行完后返回一个指向记录集的指针。

下面以一个执行SQL以建立一张学生信息的表的例子说明如下:

_variant_t RecordsAffected;

m_pConnection->Execute("CREATE TABLE myTable(StuID INTEGER,StuName TEXT,Old INTEGER,Birthday DATETIME)",&RecordsAffected,adCmdText);

     利用Command对象来执行SQL命令

当要执行复杂的命令以及执行带参数的命令时,要使用命令对象对数据源进行操作,这需要创建命令对象并使用命令对象所提供的函数。具体过程如以下代码所示:

_CommandPtr m_pCommand;

m_pCommand.CreateInstance("ADODB.Command"); //创建一个命令对象

m_pCommand->ActiveConnection = m_pConnection;

//将建立的连接赋值给它

m_pCommand->CommandText = "SELECT * FROM myTable";

//指定要执行的SQL命令字符串

m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);

//执行命令,取得记录集

5)记录集的遍历、更新

ADO提供了在记录集中增加、删除和移动记录的方法,用这些方法可以很方便地遍历和更新记录集。这些方法的使用跟MFC数据库类的方法类似,这里就不再一一说明。

6)关闭记录集与连接

记录集或连接都可以用Close方法来关闭。

 m_pRecordset->Close();//关闭记录集

 m_pConnection->Close();//关闭连接

读到此处相信读者已经熟悉ADO操作数据库的大致流程了,最后值得指出的是因为ADO是COM接口,为了软件的可靠性,在打开ADO连接时,应该加入异常处理代码。

3         结束语

ADO技术具有易于使用、访问灵活、对磁盘和存储容量要求小、应用范围广等特点,其优越性已经在笔者用Visual C++6.0开发的电力系统接线图动态配置软件中得到了很好的体现。了解和掌握ADO技术具有深远的意义。

Visual C++ ADO数据库编程入门  ADO 是目前在Windows环境中比较流行的客户端数据库编程技术。ADO是建立在OLE DB底层技术之上的高级编程接口,因而它兼具有强大的数据处理功能(处理各种不同类型的数据源、分布式的数据处理等等)和极其简单、易用的编程接口,因而得到了广泛的应用。而且按微软公司的意图,OLE DB和ADO将逐步取代 ODBC和DAO。现在介绍ADO各种应用的文章和书籍有很多,本文着重站在初学者的角度 阅读详情

相关推荐

Visual c++ 6.0 ADO access

<br />ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。<br />_ConnectionPtr接口返回一个记录集或一个空指针。<br />通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。<br />使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。<br />通常同Cdatabase一样,使用它创建一个数据连接,然后使用其它对象执行数据输入输出操作。<br />_Comman

6755

不错的pdb文件哦

不错的pdb文件,一定要支持哦!加油加油下载!

数据库编程ADO技术在Visual C++中的应用

本文深入探讨了如何在Visual C++中使用ADO技术进行数据库编程。介绍了ClistCtrlEx类的使用方法,以及如何通过ADO连接数据库、查询记录,并在列表控件中展示数据。同时,讨论了不同类型的游标以及如何使用AddNew、Update和Delete函数来修改数据库记录。

weixin_36019375的博客 343

VS2022调试代码 下载MFC的pdb符号文件

1.如图所示打开选项 2. 点击调试-符号,注意勾选“Microsoft”符号服务器。并且,将“在此目录下缓存符号”改为不需要管理员权限可写入的路径。 3. 点击确定,然后开始调试程序。 4. 出现无可用源时,选择在服务器搜索符号,静待下载完成,即可跳转至相应代码查看问题。 还可以参考链接 ...

simple的博客 2216

如何跟踪MFC源码

PDB文件,英文全称:Program Database File。保存着调试和项目状态信息,并且使用这些信息可以对程序的调试配置进行增量链接。当在Visual stido使用 /ZI 或者/Zi方式编译c/c++程序时,将会生成一个以该项目命名的.PDB文件。     如果没有PDB文件,将无法查看堆栈里的具体信息,以及查看源码的功能。     如果我们想跟踪MFC的源码,必须要有相应的P

imhikaru的专栏 1471

ADO异步操作的研究与学习

1、同步与异步:同步是阻塞模式,异步是非阻塞模式。      (1)我们平时经常讨论的同步问题多发生在多线程环境中的数据共享问题。即当多个线程需要访问同一个资源时,它们需要以某种顺序来确保该资源在某一特定时刻只能被一个线程所访问,如果使用异步,程序的运行结果将不可预料。因此,在这种情况下,就必须对数据进行同步,即限制只能有一个进程访问资源,其他线程必须等待。      (2)当应用程序在对象上调用...

xzsfg6825的博客 967

PDB文件详解

PDB文件的介绍 PDB(Program Data Base),意即程序的基本数据,是VS编译链接时生成的文件。DPB文件主要存储了VS调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、FPO(帧指针)、对应的行号等等。因为存储的是调试信息,所以一般情况下PDB文件是在Debug模式下才会生成。 PDB文件的调用过程 模块(Module),EXE和DLL...

weixin_30802171的博客 4741

MFC多线程程序设计(源自深入浅出MFC)

一个进程的PDB通过一个"MODREF链表"连接到其所使用的所有模块一个线程的TDB里面都放置了消息队列只有UI线程的优先级会改变,Worker线程的优先级不会改变线程上下文  当线程暂停的时候要求把CPU拥有权让出来,以备将暂停之前一刻的状态统统记录下来。AfxBeginThread和CreateThread函数创建线程的时候,内部调用::CreateThread或_beginthr

闻道有先后,术业有专攻,如是而已。 754

ADO

<br />ADO微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。 <br /><br />ADO被设计来继承微软早期的数据访问对象层,包括RDO (Remote Data Objects) 和DAO(D

Augusdi的专栏 2244

ADO在VC++中进行数据库编程

ActiveX Data Objects (ADO)是用于访问数据的基于自动化的接口。ADO使用OLE DB接口访问范围广大的数据源,包括但不限于通过ODBC提供的数据。   在这里我们不得不提到另一个对象RDS。Microsoft Remote Data Service (RDS)是ADO的一个组件,它为驻留在 Microsoft Internet Explorer上的应用程序提供快速有效的数

centipede198613的专栏 836

ado访问数据库

原作者姓名 相生昌 介绍 VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。 正文 一、ADO概述 ADOMicrosoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。ADO 最主要的优点是易于使用、速度快

joimson的专栏 647

VC++ ADO相关

<VC对ADO的操作> ADO概述: ADOMicrosoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。 ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。 ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。 ADO 在关键的应用方案中使用最少的网络流量...

weixin_34101229的博客 79

VC中连接数据库编程 详解2

1、 概述 1、1 Visual C++开发数据库技术的特点 Visual C++提供了多种多样的数据库访问技术——ODBC API、MFC ODBC、DAO、OLE DB、ADO等。这些技术各有自己的特点,它们提供了简单、灵活、访问速度快、可扩展性好的开发技术。 简单性 Visual C++中提供了MFC类库、ATL模板类以及AppWizard、ClassWizard等一系列的

1106

使用Visual C++ Extensions实现ADO数据绑定

前言:在使用ADOVisual C++进行数据库程序开发时,程序员会面临一项复杂的任务,那就是对VARIANT类型字段的处理。Visual C++ Extensions for ADO提供了IADORecordBinding接口,使用该接口程序员可以绕开VARIANT而直接把数据库的数据读取到本地的C/C++类型数据中。 ADO提供了IADORecordBinding接口,使用该接口程序员可以

niushitang的专栏 1590

Visual C++中用ADO进行数据库编程

转载自VCKBASE:http://www.vckbase.com/document/viewdoc/?id=3071. 生成应用程序框架并初始化OLE/COM库环境   创建一个标准的MFC AppWizard(exe)应用程序,然后在使用ADO数据库的InitInstance函数中初始化OLE/COM库(因为ADO库是一个COM DLL库)。本例为: BOOL CAdotestDlg::OnI

2253

Visual C++中的活动数据对象(ado) zhuan

 程序运行效果截图:摘 要: 本文简要介绍了微软的活动数据对象(ADO)模型,结合实例阐述了在Visual C++环境下使用ADO操纵数据库的基本步骤,分析ADO的特点及与开放式数据库连接(ODBC)的差异与应用前景。 左图:ADO对象模型   关键词: 活动数据对象 数据库 Visual C++   1 ADO是微软整个COM战略体系中的一个组成部分   活动数据对象(ADO)是一组由微软提供的

wangyh专栏 2080
上一篇: Emacs下载
下一篇: VC++中播放声音
angelcm51
博客等级 码龄19年 23粉丝 10原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值