如何实现返回记录集的 Visual C++ COM 对象
2006-06-07 14:28
786 查看
察看本文应用于的产品
function loadTOCNode(){}
文章编号 | : | 225131 |
最后修改 | : | 2006年5月25日 |
修订 | : | 4.1 |
概要
loadTOCNode(1, 'summary');本文通过举例介绍如何实现向 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
回到顶端 |
更多信息
loadTOCNode(1, 'moreinformation');使用下列步骤实现一种方法,该方法从 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=<username> 和 pwd=<strong password> 更改为正确的值,然后才能运行此代码。请确保该 UID 具有在数据库中执行此操作所需的适当权限。 STDMETHODIMP CPassRsObj::TestMethod(LPDISPATCH *ppRecordset ) { _ConnectionPtr pConn; _RecordsetPtr pRs; pConn.CreateInstance(__uuidof(Connection)); pRs.CreateInstance(__uuidof(Recordset)); pConn->Open("DSN=pubs;uid=<username>;pwd=<strong password>;", (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) & "<BR>" ) rsTest.MoveNext Loop until rsTest.EOF rsTest.Close Set rsTest = Nothing Set oTestPassRs = Nothing %> |
回到顶端 |
参考
相关文章推荐
- C++如何实现类对象只能动态分配或只能静态分配
- [C/C++]函数如何返回struct或class对象
- c++如何自定义ostream对象,使其实现cout的功能
- 『C/C++』C++构造函数无返回值,如何判断对象是否“构造”成功?
- C++调用函数是如何返回临时对象的
- 如何使用Criteria 实现两表的左外连接,返回根对象
- c++如何自定义ostream对象,使其实现cout的功能
- C/C++函数如何返回struct或class对象
- 如何用C++来实现在循环链表里展示除了最后一个节点,然后返回所展示的节点总和
- 仅返回类型不同的函数,在C++中如何实现重载?
- C++对象模型之编译器如何处理函数返回一个对象
- 仅返回类型不同的函数,在C++中如何实现重载?
- C++实现之——尽量避免返回handles指向对象内部成分
- COM组件对象如何实现索引属性
- C++小课堂--第一期---面向对象之前 --- 实现函数返回结构体,实现大数据的传输
- C/C++函数如何返回struct或class对象
- C++如何实现只能动态分配类对象,不能定义类对象
- C++中显式和隐式调用(直接返回结构体如何生成对象)
- C++如何实现类对象只能动态分配或只能静态分配
- [C++学习笔记14]动态创建对象(定义静态方法实现在map查找具体类名对应的创建函数,并返回函数指针,map真是一个万能类)good