Visual C++编程封装ADO类
发布时间:2008/6/3 0:00:00 访问次数:405
摘 要:本文介绍了ado访问数据库的基本过程,给出了一种在visual c++下封装ado访问数据库类的方法。
关键词:封装;ado;visual c
1 引言
在过去几年中,微软公司相继推出了几种数据访问技术,先是dao(data access objects),然后是rdo(remote data objects),现在是ado(acticex data objects)。ado是microsoft数据库应用程序开发的新接口,是微软最新的数据访问技术。它被设计用来同新的数据访问层ole db provider一起协同工作,以提供通用数据访问(universal data access)。ado向我们提供了一个熟悉的,高层的对ole db的automation封装接口,它简化了数据访问的过程,增加了数据访问的灵活性,是当前数据访问接口的主流技术。
用vb或者vbscript来操作ado是非常方便的,但是如果使用c++或者是java,就必须要处理类似variants这样的数据结构,从而实现和c++数据结构的转换,而这种处理无疑是c++开发人员都很头疼的事情。而且ado是应用层的编程接口,它通过ole db提供的com接口访问数据,使用ado访问数据库需要使用许多api函数和ado的对象,对于初学者来说,可能有些难度。即便对于ado的编程高手,经常要书写大量相同的ado冗余代码,也会感到厌烦。看过网上不少绍封装ado的各种文章,也各有利弊。笔者在visual c++下也尝试封装ado访问数据库类,使其更方便地使用现有的vc的数据类型,简化应用程序书写的逻辑,增加程序的可读性。达到了比较好的应用效果,本文将给出笔者所使用封装方法和源程序。
2 建立ado封装类
2.1 ado对象基本模型
ado模型包含了连接对象、命令对象、域对象、参数对象、记录集对象、错误对象等。对象之间又具有层次关系,其关系如图1所示。
在vc中使用ado访问数据库基本过程是:
初始化com库,引入ado库文件
用connection对象连接数据库
利用建立好的连接,通过利用recordset对象取得结果记录集进行查询、处理。
使用完毕后关闭连接释放对象
2.2基本操作函数和数据结构
封装的ado类应包括以下函数和数据结构:
1)建立数据库连接函数opendatabase()
ado连接数据库首先要用到connection对象,它是到数据库的物理连接,管理着应用程序和数据库之间的通讯。对于大多数的数据库系统,每一个物理连接都需要耗费大量系统内存,是宝贵的系统资源,不可滥用。考虑到应用程序的效率,每一个数据库客户端都只用一个物理连接,并且应用程序结束后应该释放。
2)关闭数据库连接函数closedatabase()
3)sql查询语句函数 select()
记录集的建立和查询结果得获取是影响应用程序得效率得关键问题。由于每一次查询结果都可能不一样,所以每个查询语句都要建立一个记录集对象。
4)执行无返回结果的sql语句函数excute()
5)查询结果数组pdata
为了数据类型转换的方便,我们将记录集数据类型都转换为cstring类型,存放在查询结果数组pdata中,由于c++的cstring是一个高效和功能强大的类,我们可以很方便地读取记录集中的查询结果。
6)结果数组大小nresultrow和nresultcol
2.3 ado封装类头文件
封装类头文件adodb.h定义如下:
2.4 封装类实现文件
封装类实现文件adodb.cpp如下:
关键词:封装;ado;visual c
1 引言
在过去几年中,微软公司相继推出了几种数据访问技术,先是dao(data access objects),然后是rdo(remote data objects),现在是ado(acticex data objects)。ado是microsoft数据库应用程序开发的新接口,是微软最新的数据访问技术。它被设计用来同新的数据访问层ole db provider一起协同工作,以提供通用数据访问(universal data access)。ado向我们提供了一个熟悉的,高层的对ole db的automation封装接口,它简化了数据访问的过程,增加了数据访问的灵活性,是当前数据访问接口的主流技术。
用vb或者vbscript来操作ado是非常方便的,但是如果使用c++或者是java,就必须要处理类似variants这样的数据结构,从而实现和c++数据结构的转换,而这种处理无疑是c++开发人员都很头疼的事情。而且ado是应用层的编程接口,它通过ole db提供的com接口访问数据,使用ado访问数据库需要使用许多api函数和ado的对象,对于初学者来说,可能有些难度。即便对于ado的编程高手,经常要书写大量相同的ado冗余代码,也会感到厌烦。看过网上不少绍封装ado的各种文章,也各有利弊。笔者在visual c++下也尝试封装ado访问数据库类,使其更方便地使用现有的vc的数据类型,简化应用程序书写的逻辑,增加程序的可读性。达到了比较好的应用效果,本文将给出笔者所使用封装方法和源程序。
2 建立ado封装类
2.1 ado对象基本模型
ado模型包含了连接对象、命令对象、域对象、参数对象、记录集对象、错误对象等。对象之间又具有层次关系,其关系如图1所示。
在vc中使用ado访问数据库基本过程是:
初始化com库,引入ado库文件
用connection对象连接数据库
利用建立好的连接,通过利用recordset对象取得结果记录集进行查询、处理。
使用完毕后关闭连接释放对象
2.2基本操作函数和数据结构
封装的ado类应包括以下函数和数据结构:
1)建立数据库连接函数opendatabase()
ado连接数据库首先要用到connection对象,它是到数据库的物理连接,管理着应用程序和数据库之间的通讯。对于大多数的数据库系统,每一个物理连接都需要耗费大量系统内存,是宝贵的系统资源,不可滥用。考虑到应用程序的效率,每一个数据库客户端都只用一个物理连接,并且应用程序结束后应该释放。
2)关闭数据库连接函数closedatabase()
3)sql查询语句函数 select()
记录集的建立和查询结果得获取是影响应用程序得效率得关键问题。由于每一次查询结果都可能不一样,所以每个查询语句都要建立一个记录集对象。
4)执行无返回结果的sql语句函数excute()
5)查询结果数组pdata
为了数据类型转换的方便,我们将记录集数据类型都转换为cstring类型,存放在查询结果数组pdata中,由于c++的cstring是一个高效和功能强大的类,我们可以很方便地读取记录集中的查询结果。
6)结果数组大小nresultrow和nresultcol
2.3 ado封装类头文件
封装类头文件adodb.h定义如下:
class cadodb : public cobject { public: cadodb(); //构造函数 ~cadodb(); //析构函数 public: int nresultrow; //查询结果行数 int nresultcol; //查询结果列数 cstringarray pdata; //存放查询结果数组 大小为nrow*ncol cstring errormessage; //ado错误信息 bool opendatabase(cstring dsnname,cstring suserid,cstring spassword); //打开数据库连接 输入dsn名称、用户id和密码 int select(cstring sql); //执行sql查询语句,结果放在数组pdata中 int excute(cstring sql); //执行无返回值得sql语句 bool closedatabase(); //关闭数据库连接 protected: _connectionptr m_pconnection; //定义连接指针 }; |
2.4 封装类实现文件
封装类实现文件adodb.cpp如下:
#include "stdafx.h" #include "adodb.h" cadodb::cadodb() //构造函数,完成初始化 { nresultrow=0; // nresultcol=0; //记录集行数和列数 m_pconnection = null; } cadodb::~cadodb() //关闭数据库物理连接 { if(m_pconn
摘 要:本文介绍了ado访问数据库的基本过程,给出了一种在visual c++下封装ado访问数据库类的方法。 关键词:封装;ado;visual c 1 引言 在过去几年中,微软公司相继推出了几种数据访问技术,先是dao(data access objects),然后是rdo(remote data objects),现在是ado(acticex data objects)。ado是microsoft数据库应用程序开发的新接口,是微软最新的数据访问技术。它被设计用来同新的数据访问层ole db provider一起协同工作,以提供通用数据访问(universal data access)。ado向我们提供了一个熟悉的,高层的对ole db的automation封装接口,它简化了数据访问的过程,增加了数据访问的灵活性,是当前数据访问接口的主流技术。 用vb或者vbscript来操作ado是非常方便的,但是如果使用c++或者是java,就必须要处理类似variants这样的数据结构,从而实现和c++数据结构的转换,而这种处理无疑是c++开发人员都很头疼的事情。而且ado是应用层的编程接口,它通过ole db提供的com接口访问数据,使用ado访问数据库需要使用许多api函数和ado的对象,对于初学者来说,可能有些难度。即便对于ado的编程高手,经常要书写大量相同的ado冗余代码,也会感到厌烦。看过网上不少绍封装ado的各种文章,也各有利弊。笔者在visual c++下也尝试封装ado访问数据库类,使其更方便地使用现有的vc的数据类型,简化应用程序书写的逻辑,增加程序的可读性。达到了比较好的应用效果,本文将给出笔者所使用封装方法和源程序。 2 建立ado封装类 2.1 ado对象基本模型 ado模型包含了连接对象、命令对象、域对象、参数对象、记录集对象、错误对象等。对象之间又具有层次关系,其关系如图1所示。 在vc中使用ado访问数据库基本过程是: 初始化com库,引入ado库文件 用connection对象连接数据库 利用建立好的连接,通过利用recordset对象取得结果记录集进行查询、处理。 使用完毕后关闭连接释放对象 2.2基本操作函数和数据结构 封装的ado类应包括以下函数和数据结构: 1)建立数据库连接函数opendatabase() ado连接数据库首先要用到connection对象,它是到数据库的物理连接,管理着应用程序和数据库之间的通讯。对于大多数的数据库系统,每一个物理连接都需要耗费大量系统内存,是宝贵的系统资源,不可滥用。考虑到应用程序的效率,每一个数据库客户端都只用一个物理连接,并且应用程序结束后应该释放。 2)关闭数据库连接函数closedatabase() 3)sql查询语句函数 select() 记录集的建立和查询结果得获取是影响应用程序得效率得关键问题。由于每一次查询结果都可能不一样,所以每个查询语句都要建立一个记录集对象。 4)执行无返回结果的sql语句函数excute() 5)查询结果数组pdata 为了数据类型转换的方便,我们将记录集数据类型都转换为cstring类型,存放在查询结果数组pdata中,由于c++的cstring是一个高效和功能强大的类,我们可以很方便地读取记录集中的查询结果。 6)结果数组大小nresultrow和nresultcol 2.3 ado封装类头文件 封装类头文件adodb.h定义如下:
2.4 封装类实现文件 封装类实现文件adodb.cpp如下:
|