您的位置:首页 > 数据库

VC6.0数据库编程之ADO

2008-10-19 20:00 120 查看
VC6.0数据库编程之ADO
在谈论了ODBC后,再来看一下使用ADO技术开发数据库管理系统的一些相关问题。
ADO是Microsoft为OLE DB 而设计的,它为操作OLE DB数据源提供了一套高层次自动化接口。ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。OLE DB是一组”组件对象模型”(COM) 接口,由于本人没有使用过OLE DB,关于OLE DB的问题以后在讨论。
首先介绍一下ADO包含的7种对象:
连接对象(Connection):用来连接数据源,以及除了一些命令和事务
命令对象(Command):用于处理传递给数据源的命令
记录集对象(Recordset):用于处理数据的表格集,如获取和修改数据
域对象(Field):用于表示记录集的类信息,包括列值以及其它信息
参数对象(Parameter):用于对传送给数据源的命令的参数赋值
属性对象(Property):用于操作在ADO中使用的其它对象的详细信息
错误对象(Error):获取ADO数据操作时产生的错误的详细信息
Visual C++6.0为ADO操作提供了库支持,一般情况下,每个Windows操作系统的C:/Program Files/Common Files/System/ado/目录下都有一个msado*.dll文件,根据Windows版本的不同,该文件可以是msado1.dll、msado15.dll和msado2.dll。在利用Visual C++6.0进行ADO编程时,可以借助Visual C++6.0的import宏,将该库文件引用到工程里,从而使msado*.dll库里的数据和函数声明被应用的代码所使用。(关于dll,有时间将在后面讨论) 通过引用,msado*.dll库在工程里产生了所有ADO对象的描述和声明,这些声明同前面介绍的对象名称基本相似,但它提供的时一些指针,如下:
_ConnectionPtr:指向ADO的Connect对象的指针。
_RecordsetPtr:指向ADO的Recordset对象的指针。
_CommandPtr:指向ADO的Command对象的指针。
_ParameterPtr:指向ADO的Parameter对象的指针。
FieldPtr:指向ADO的Field对象的指针。
ErrorPtr:指向ADO的Error对象的指针。
PropertyPtr:指向ADO的Property对象的指针。
下面具体讨论下VC6.0中使用ADO开发数据库的过程:
1、将ADO代码库引入工程
ADO代码库封装在StdAfx.h中,一般在StdAfx.h中导入msado*.dll:#import "C:/Program Files/CommonFiles/System/ado
/msado15.dll" no_namespace rename("EOF","MY_EOF"),no_namespace指明不适用命名空间,rename重命名,避免冲突,因为EOF在很多地方都使用,如文件结尾。
2、初始化com库
ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/COM库环境。可以调用CoInitialize(NULL),参数保留。
3、连接数据库
连接数据库可以定义一Connect对象的指针,即_ConnectionPtr m_pConn;然后调用Open方法,参数1为连接字串,如果是SQL Server 2000,为"DSN=Test;Provider=MSDASQL",如果是Oracle,则为"Provider=MSDAORA.1;DataSource=Test;PersistSecurityInfo
=True",参数2、3为用户名和密码,参数4为打开方式,adAsyncConnect表示同步,adConnectUnspecified表示异步。也可以给Connection对象的ConnectionString赋值,如:
m_pConn->ConnectionString="Provider=MSDAORA.1;DataSource=Test;PersistSecurityInfo=True;UserId=scott;Password=123",这样,
在调用Open时参数1、2、3为空串,SQL Server同样可以。
打开数据库后,可以调用Execute执行Sql语句,该函数返回值为一记录集指针,见下。
4、获取记录集
首先定义一Recordset对象指针,_RecordsetPtr m_pSet,给m_pSet赋值:m_pSet=m_pConn->Execute("Sql语句",NULL,
adCmdText),也可以直接调用其Open:m_pSet->Open("Sql语句",_varint_t((IDispatch*)m_pConn),adOpenStatic,adLockOptimistic,
adCmdText),动态打开用adOpenDynamic。打开记录集后获取字段值:m_pSet->GetCollect("字段名称"),返回值为_varint_t类型,
要先强制转换成_bstr_t,该类型可自动转换成CString。
5、关闭并释放对象指针
先关闭记录集,在关闭连接对象,都使用Close方法,然后都用Release释放指针,注意顺序一样且只能关闭一次。
6、释放Com库
调用CoUnInitialize( )释放Com库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: