WEB开发网
开发学院软件开发VC 使用ADO封装类的数据库程序开发实例(上) 阅读

使用ADO封装类的数据库程序开发实例(上)

 2008-04-19 20:27:57 来源:WEB开发网   
核心提示:源代码运行效果图如下:一、前言用过ADO的人都知道, 调用ADO要处理很多"麻烦"的事情,如异常处理等,要写很多try - catch块. 有点不甚其烦,使用ADO封装类的数据库程序开发实例(上),我干脆把常用的函数都封装起来,免去老是要写try - catch块的麻烦,它的原型是 Open(BST

源代码运行效果图如下:

一、前言

用过ADO的人都知道, 调用ADO要处理很多"麻烦"的事情,如异常处理等,要写很多try - catch块. 有点不甚其烦。我干脆把常用的函数都封装起来,免去老是要写try - catch块的麻烦。做起来虽然没有什么技术含量,但也比较烦琐,所以只完成了一部分,且由于时间及个人水平有限,没有对封装的东西作全面测试,并必定有很多错误,但想到对某些朋友可能有用。所以先"捐"出来了。^-^.

在介绍这两个类之前,让我们先来了解一下ADO,本文假设你已有一定的编程能力:

二、了解ADO的结构体系

ADO(ActiveX Data Object, Active 数据对象)是Microsoft提供的一种面向对象,与语言无关的数据访问应用编程接口。据大部分资料介绍,它有如下主要特点:

一:易于使用。

二:可以访问多种数据源。

三:访问速度快,效率高:

四:方便Web应用。

五:技术编程接口丰富。

六:低内存支出和占用磁盘空间较少.

正是看到ADO这么多优点,使我对用ADO开发数据库产生了兴趣.ADO用起来也如前面所说的一样,确实不难。总的来说,ADO模型包括了下列对象:连接(Connection)、命令 (Command)、记录集 (Recordset)、字段 (Field)、参数 (Parameter)、错误 (Error)、属性 (Property)、集合 、事件.它们之间的关系如下图:

(1)我们最常用的主要是Connection、Recordset及Command这三个对象.

(2)对于访问一个数据库来说,我们一般先建立一个ADO连接.

(3)ADO连接可以直接执行SQL语句来操纵数据库,但如果我们要对数据在应用程序和数据源之间进行存取的话,就需要用到记录集对象。一个ADO连接可以有多个ADO连接,但一个ADO连接一般只能对应一个且必须对应一个ADO连接.

(4)另外如果你可进行更高级别的访问的话,还可能要用到命令对象。例如要调用存储过程等。

(5)一个记录集包含有一个字段集,一个字段集则包含有多个字段对象。

(6)同样一个命令对象也包含一个参数集,一个参数集则包含有多个参数对象。

(7)连接对象也有一个错误集并包含有多个错误对象。

这就是ADO各对象之间大致的关系.

三、了解ADO连接

在使用数据库之前,要先建立连接.一般先用CreateInstance方法创建ADO连接对象,然后就可以用Open方法连接到数据库。它的原型是 Open(BSTR ConnectionString, BSTR UserID, BSTR Password, long Options);其中UserID和Password如果在ConnectionString已经指明了用户名和密码,一般就可以不必管它们.Options指的是是以同步方式(adConnectUnspecified)还是以异步方式(adAsyncConnect)进行连接,默认为同步.这个函数的关键这处在于ConnectionString参数,它决定了我们将以什么方式连接到什么数据源,例如:

如果是Access数据库,它的格式则一般为: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";

如果是SQL Server: "Provider=SQLOLEDB.1;Data Source=sqlservername;Initial Catalog=master;UserID=sa; PWD=password";

具体的内容视你的环境而定.要连接到其他数据库,请参考相关的资料.

例如:

_ConnectionPtr pConnection;
LPCSTR strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb";
//创建 Connection 对象---------------------------
HRESULT hr = pConnection.CreateInstance("ADODB.Connection");
//设置连接时间-----------------------------------
pConnection->put_ConnectionTimeout(long(5));
if (SUCCEEDED(hr))
{
  // 连接数据库---------------------------------------------
  pConnection->Open(strConnect, "", "", adConnectUnspecified))
}

1 2  下一页

Tags:使用 ADO 封装

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接