频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

如何实现返回记录集的Visual C++ COM对象

作者: 出处:51CTO.com  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2007-02-01 10:08
关 键 词:Visual C++  COM  对象
阅读提示:本文通过举例介绍如何实现向Active Server Pages (ASP)返回记录集的Visual C++组件对象模型(COM)对象。

错误实现该对象可能会导致内存泄漏或下列错误之一:

The operation requested by the application is not allowed if the object is closed.

- 或 -

类型不匹配

- 或 -

error 'ASP 0115' - A trappable error occured in an external object

更多信息

使用下列步骤实现一种方法,该方法从 Visual C++ COM 对象向 Active Server Pages 返回记录集。

1. 创建一个名为“PassRs”的 ATL DLL 项目。
2. 插入一个名为“PassRsObj”的 ATL 对象。 
3. 添加包含以下信息的方法:

Method Name: TestMethod
Parameters : [out, retval] LPDISPATCH* ppRecordset

4. 在对象的实现文件中包括下面一行:

#import "msado15.dll" no_namespace rename("EOF", "adoEOF")

5. 按如下所示实现该方法:

注意:您必须先将 UID= 和 pwd= 更改为正确的值,然后才能运行此代码。请确保该 UID 具有在数据库中执行此操作所需的适当权限。

STDMETHODIMP CPassRsObj::TestMethod(LPDISPATCH *ppRecordset )
{
_ConnectionPtr pConn;
_RecordsetPtr pRs;

pConn.CreateInstance(__uuidof(Connection));
pRs.CreateInstance(__uuidof(Recordset));

pConn->Open("DSN=pubs;uid=;pwd=;",

(BSTR) NULL, (BSTR) NULL, -1);

//Client side cursor is required for disconnected recordsets
pRs->CursorLocation = adUseClient;

pRs->Open( "select * from authors",
pConn.GetInterfacePtr(),
adOpenKeyset, adLockOptimistic, -1);

// Disconnect the recordset
pRs->PutRefActiveConnection(NULL);

//Clone the recordset.
//NOTE: Recordset to be cloned must support bookmarks
pRs->Clone(adLockOptimistic)->QueryInterface(IID_IDispatch,

(void**) ppRecordset);

pRs->Close();
pConn->Close();

pRs = NULL;
pConn = NULL; 

return S_OK;
}

6. 创建含有以下代码的 ASP 页:

<%
Dim rsTest, oTestPassRs
Set oTestPassRs = Server.CreateObject("PassRs.PassRsObj")
Set rsTest = oTestPassRs.TestMethod()
Do
Response.Write ( "Value in Record = " & rsTest(1) & "
" )
rsTest.MoveNext
Loop until rsTest.EOF
rsTest.Close
Set rsTest = Nothing
Set oTestPassRs = Nothing
%>

这篇文章中的信息适用于:
◆Microsoft Active Server Pages 4.0
◆Microsoft ActiveX Data Objects 2.7
◆ Microsoft Visual C++ 5.0 企业版
◆ Microsoft Visual C++ 6.0 企业版
◆Microsoft Visual C++ 5.0 专业版
◆Microsoft Visual C++ 6.0 专业版
◆Microsoft Visual C++ 6.0 标准版
◆Microsoft Internet Information Server 4.0
◆Microsoft Internet Information Services 5.0
◆Microsoft Data Access Components 2.5

(责任编辑 火凤凰 sunsj@51cto.com  TEL:(010)68476636-8007)


发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看52473次)
·UML类图详解 (查看46951次)
·Java编程开发手册 (查看25172次)
·UML统一建模语言 (查看24155次)
·C#技术开发指南 (查看22515次)
·Java编程开发手册 (1195个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (304个砖)
·PB开发教程 (220个砖)
·.NET开发手册 (217个砖)
·Java编程开发手册 (653个好)
·Java基础教程 (569个好)
·.NET开发手册 (251个好)
·PB开发教程 (209个好)
·Delphi开发技术手册 (174个好)
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章