ADO数据库VC

使用ADO操作数据库 ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。 ADO数据库访问技术使用的基本步骤及方法:首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),类型库被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现: #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename ("EOF", "adoEOF") #import语句会在工程可执行程序输出目录中产生两个文件来,分别为*.tlh(类型库头文件)及*.tli(类型库实现文件),它们分别为每一个接口产生智能指针,并为各种接口方法、枚举类型,CLSID等进行声明,创建一系列封装方法。语句no_namespace说明ADO对象不使用命名空间,rename ("EOF", "adoEOF")说明将ADO中结束标志EOF改为adoEOF,以避免和其它库中命名相冲突。 其次,在程序初始过程中需要初始化组件,一般可以用CoInitialize(NULL);来实现,这种方法在结束时要关闭初始化的COM,可以用下面语句CoUnInitialize();来实现。接着,就可以直接使用ADO的操作了。我们经常使用的只是前面用#import语句引用类型库时,生成的包装类.tlh中声明的智能指针中的三个,它们分别是_ConnectionPtr、_RecordsetPtr和_CommandPtr。下面分别对它们的使用方法进行介绍: 1、_ConnectionPtr智能指针,通常用于打开、关03闭一个库连接或用它的Execute方法来执行一个不返回结果的命令语句。 2、_RecordsetPtr智能指针,可以用来打开库内数据表,并可以对表内的记录、字段等进行各种操作。 3、CommandPtr智能指针,可以使用_ConnectionPtr或_RecordsetPtr来执行任务,定义输出参数,执行存储过程或SQL语句。 附代码与说明: //创建个连接对象 _ConnectionPtr m_pConnection; //对连接进行初始化 CoInitialize(NULL); //连接(Connection)创建并获取一个数据库连接实例 m_pConnection.CreateInstance(__uuidof(Connection)); //打开本地Access库Demo.mdb //第一个是Provider=Microsoft.Jet.OLEDB.4.0; access的厂商 //Data Source=Demo.mdb","","",adModeUnknown (数据库名称 , 用户名(空) ,密码(空), 缺省连接模式) m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Demo.mdb","","",adModeUnknown); //数据集对象 _RecordsetPtr m_pRecordset; //_CommandPtr对象 _CommandPtr m_pCommand; //实例化m_pCommand m_pCommand.CreateInstance(__uuidof(Command)); m_pCommand->ActiveConnection = m_pConnection; // 将库连接赋于它 m_pCommand->CommandText = "SELECT * FROM DemoTable"; // SQL语句 m_pRecordset = m_pCommand->Execute(NULL, NULL,adCmdText); // 执行SQL语句,返回记录集 while(!m_pRecordset ->adoEOF) { ………… //读取表内数据 m_pRecordset->MoveFirst();//第一条记录 m_pRecordset->Fields->GetItem(字段名)->Value//获取当前记录指针所指的字段值 m_pRecordset->MoveNext();//移动到下一条记录位置 //插入记录 m_pRecordset->AddNew();//新增一个空记录 m_pRecordset->PutCollect("Name", _variant_t(m_Name)); //输入每个字段的值 m_pRecordset->Update();//更新库中数据 //删除记录 m_pRecordset->Delete(adAffectCurrent); // 参数adAffectCurrent为删除当前记录 ……….. } //关闭记录集 m_pRecordset->Close(); m_pRecordset = NULL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值