VC使用ADO连接Oracle数据库详解(含源码下载)

本文介绍了ADO对象模型中的关键对象,包括连接对象、命令对象和记录集对象,并详细讲解了如何在Visual C++环境下使用ADO连接Oracle数据库的具体步骤。

ADO 主要对象介绍

    ADO对象包括:连接对象(Connection Object)、命令对象 (Command Object) 、记录集对象(RecordSet  Object)、字段对象(Field  Object) 、记录对象(Record  Object) 、错误对象(ErrorObject)、参数对象(Parameter Object) 、属性对(Property Object)和流对象(Stream Object) 。其中最为重要的3 个对象是连接对象、命令对象和记录集对象。

    连接对象(Connection Object)代表一个和数据源的连接,以后的数据库操作都是建立在这个连接上的。这和 MFC ODBC中创建数据源的连接的CDatabase数据库类非常相似,其他功能也非常相似。连接对象提供了对数据库的操作,但是它不返回数据库操作之后的记录集,这是和命令对象不同的一点。

    命令对象(Command  Object)用来处理数据库的一些操作,在某些方面具有和连接对象相同的功能。例如都可以执行标准的SQL 语句以及存储过程,不过命令对象可以返回带有记录集的结果。

    记录集对象(RecordSet  Object)代表了一个记录集,和MFC  ODBC中的CRecordset 记录集类有些相似,用来访问记录集。记录集对象能方便地实现记录的添加、修改和删除操作。

在使用这3 个对象的时候,需要定义与之对应的3 个智能指针,分别为:_ConnectionPtr、

_CommandPtr 和_RecordsetPtr ,然后调用它们的CreateInstance方法实例化,从而创建这3

个对象的实例。

_bstr_t 和_variant_t 类

    在利用ADO进行数据库开发的时候,_bstr_t 和_variant_t两个类很有用,省去了许多BSTR 和VARIANT 类型转换的麻烦。COM编程不使用CString类,因为COM必须设计成跨平台,它需要一种更普遍的方式来处理字符串以及其他数据类型,这也是VARIANT 变量数据类型的来历。BSTR 类型也是如此,用来处理 COM中的字符串。VARIANT 是一个巨大的  union 联合体,几乎包含了所有的数据类型,简单来说,_variant_t是一个类,封装了VARIANT 的数据类型,并允许我们简单地对之进行强制类型转换。同样,_bstr_t 是对BSTR 进行了封装的类。有了这两个类,开发ADO程序将得到很大的方便。

ADO连接Oracle数据库

1.引入ADO库

Visual C++中使用ADO开发数据库之前,需要引入 ADO库。可以在 StdAfx.h 文件

末尾处引入ADO库文件,方法如下:

#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")
#pragma warning(disable:4146)


使用预处理指令 import使程序在编译过程中引入ADO动态库(msado15.dll)

no_namespace表明不使用命令空间。“rename("EOF","adoEOF")”表明把ADO中用到的EOF 改为adoEOF,防止发生命名冲突。

2.初始化COM库

在MFC中的App类的InitInstance()函数中加入

CoInitialize(NULL);//表示com库的初始化

或者AfxOleInit();

鼠标右键点击建立类向导(或者按Ctrl+w)添加函数ExitInstance(),在其中加入代码

CoUninitialize();//释放com库。

3.建立数据源

进入 控制面板—>管理工具—>数据源—>系统DNS

点击添加,选择Oracle in OraDb10g_home1,不同的oracle版本安装的in后面的可能不一样,填写正确。点击OK完成。

(这里大家可以在网上找找带图片的资料添加)

4.连接数据库

建立数据库的连接需要使用连接对象(Connection Object)。首先定义一个 _ConnectionPtr类型的指针,代码如下:

 _ConnectionPtr  m_pConnection;

然后调用CreateInstance方法实例化,代码如下:

m_pConnection.Crea teInstance( _uuidof(Con nection));

调用Connection对象的Open方法创建数据库的连接,Open函数的原型如下:

    HRESULT Open  (

        _bstr_t Con nectionStri ng,

        _bstr_t Use rID,

        _bstr_t Pas sword,

        long Option s );

       其中ConnectionString是一个包含连接信息的字符串,UserID是访问数据库的用户名称,Password是访问数据库的密码,Options为可选参数。如果在连接字符串ConnectionString中包含了数据库用户名和密码,UserIDPassword值可以为空。

       ADO可以连接许多数据库供应商提供的数据源,尽管这些供应商有自己不同的特点,但是ADO使用相同的编程模型,这也是 ADO强大和灵活的一个地方。现在构造一个可以连接Oracle数据库的连接字符串ConnectionString,利用Oracle提供的OLE  DB 数据供应商(Oracle Provider for OLE DB),其典型的连接语句为“Provider=OraOLEDB.Oracle.1;DataSource=serverName;User  ID=MyUserID;  Password=  MyPassword”。其中 DataSource是本地服务名,也就是数据源。数据库本地服务名为 ORCL,数据库用户名为 db1,密码为 db1的连接数据源的代码如下:

 

	try
	{
		m_pConnection.CreateInstance(_uuidof(Connection));
		m_pConnection.CreateInstance(_uuidof(Recordset));
		m_pConnection.CreateInstance("ADODB.Connection");
		_bstr_t strConnect=_T("Provider=OraOLEDB.Oracle.1;Password=tiger;User ID=scott;Data Source=orcl;Persist Security Info=true");
		m_pConnection->Open(strConnect,"","",adModeUnknown);
	}
	catch(_com_error e)
	{
		CString errormessage;
		errormessage.Format("数据库连接失败!\r\n错误信息:%s", e.ErrorMessage());
		AfxMessageBox(errormessage);

	}



代码中使用了try 和catch来处理COM异常,如果不处理,ADO的异常有可能使程序崩溃,所以一定要记得捕捉_com_error 异常。代码中使用的OLEDB供应商为Oracle Provider for OLE DB,如果采用微软提供的供应商 Microsoft OLEDB Provider for Oracle 的驱动程序,即“Provider=MSDAORA.1 ”,其他参数不变 ,有的功能不能实现。

 

源码下载地址:http://download.csdn.net/detail/risingsun001/4316508

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值