错误实现该对象可能会导致内存泄漏或下列错误之一:
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++(www.cppentry.com) 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++(www.cppentry.com) 5.0 企业版
◆ Microsoft Visual C++(www.cppentry.com) 6.0 企业版
◆Microsoft Visual C++(www.cppentry.com) 5.0 专业版
◆Microsoft Visual C++(www.cppentry.com) 6.0 专业版
◆Microsoft Visual C++(www.cppentry.com) 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)