WEB开发网
开发学院软件开发VC ADO VC++ Extensions入门 阅读

ADO VC++ Extensions入门

 2010-06-04 20:39:32 来源:WEB开发网   
核心提示:ADO VC++ Extensions是ADO 2.0 版本提供的新接口,它支持不通过 VARIANT 便可将数据检索到本地的 C/C++ 数据类型中,ADO VC++ Extensions入门,此外,它还提供能简化接口使用过程的预处理宏,状态将会是adFldOK,如果移动到另一个字段为 NULL 的行,这些扩展程序使

ADO VC++ Extensions是ADO 2.0 版本提供的新接口,它支持不通过 VARIANT 便可将数据检索到本地的 C/C++ 数据类型中。此外,它还提供能简化接口使用过程的预处理宏,这些扩展程序使用简便并且性能良好。

ADO VC++ Extensions 可将 Recordset 对象的字段映射到 C/C++ 变量,字段与变量的映射称为绑定条目。预处理宏用来定义数值、定长和变长变量的绑定。

我们以一个简单的程序为例,说明如何在VC++中使用带Extensions 的ADO访问SQL SERVER数据库。我们假定安装了SQL SERVER数据库的Netbios名为nt_sqlserver,要访问的数据库名为pubs,操作的表名为authors。

我们可以新建一个空的工程,选择Win32 Console Application类型。先加入一个头文件,并命名为ADOtest.h,源代码如下:

//要使用 VC++ Extensions,必须在应用程序中包含的头文件:
#include "icrsint.h"
// 该类从"authors"表中 摘取出 fname, lname, city和state 四个字段
class CAuthorsRs : public CADORecordBinding
{
BEGIN_ADO_BINDING(CAuthorsRs)
ADO_VARIABLE_LENGTH_ENTRY2(1, adVarChar, m_au_fname,
sizeof(m_au_fname), l_fnameStatus, TRUE)
ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_au_lname,
sizeof(m_au_lname), l_lnameStatus, TRUE)
ADO_VARIABLE_LENGTH_ENTRY2(3, adVarChar, m_au_city,
sizeof(m_au_city), l_cityStatus, TRUE)
ADO_VARIABLE_LENGTH_ENTRY2(4, adChar, m_au_state,
sizeof(m_au_state), l_stateStatus, TRUE)
END_ADO_BINDING()
public:
char m_au_fname[21];
ULONG l_fnameStatus;
char m_au_lname[41];
ULONG l_lnameStatus;
char m_au_city[21];
ULONG l_cityStatus;
char m_au_state[3];
ULONG l_stateStatus;
};

注意,将 BEGIN_ADO_BINDING 和 END_ADO_BINDING 宏之间的绑定条目用括号括起。不要在绑定条目结尾使用逗号或分号,因为这些定界符仅限在宏中使用。

ADO_VARIABLE_LENGTH_BINDING

_ENTRY2的参数说明如下:

参数1:按顺序的字段号码,1为标识记录集中第一字段,2为标识记录集中第二字段,依此类推。

参数2:储存已转换字段的变量的数据类型。

参数3:临时的工作缓冲区,用于将字段值从 VARIANT转换为C/C++ 变量。

参数4:变长变量所需的字节数。

参数5:指示字段转换是否成功。

参数6:布尔标志。如果为 TRUE,则表明 ADO 可以更新绑定的字段。如只检查字段而不将其更改,可设置为 FALSE。

其中第5个参数为状态参数,它可告诉你从 Recordset 字段到C或C++变量的转换是否成功以及变量的内容是否有效。该参数的两个最重要的值是adFldOK(意味着转换成功)和adFldNull(意味着字段是NULL,即无值可供转换)。程序中要检测该参数以决定C或C++变量是否有效。例如,如果字段具有有效的行内容,状态将会是adFldOK,如果移动到另一个字段为 NULL 的行,则状态将是 adFldNull。

1 2  下一页

Tags:ADO VC Extensions

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