编写自己的自定义处理程序

目录

如果您是需要默认 RDS 支持的 IIS 服务器管理员,但需要进一步控制用户请求和访问权限,则可能需要编写自己的处理程序。

MSDFMAP.Handler 实现 IDataFactoryHandler 接口。

IDataFactoryHandler 接口

该接口有两种方法,即 GetRecordsetReconnect。两种方法都要求将 CursorLocation 属性设置为 adUseClient

两种方法都取“Handler=”关键词的第一个逗号后面出现的参数。例如,“Handler=progid,arg1,arg2;”将传递“arg1,arg2”的参数字符串,而“Handler=progid”将传递参数 NULL。

GetRecordset 方法

该方法使用提供的参数查询数据源并创建新的 Recordset 对象。Recordset 必须使用 adLockBatchOptimistic 打开,不能异步打开。

参数

conn   连接字符串。

args   处理程序参数。

query   产生查询所用的命令文本。

ppRS   指向返回 Recordset 的位置。

Reconnect 方法

该方法更新数据源。它创建新的 Connection 对象,并附加给定的 Recordset

参数

conn   连接字符串。

args   处理程序参数。

pRS   Recordset 对象。

msdfhdl.idl

这是出现在 msdfhdl.idl 文件中对 IDataFactoryHandler 的接口定义。

[
  uuid(D80DE8B3-0001-11d1-91E6-00C04FBBBFB3),
  version(1.0)
]
library MSDFHDL
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");    // TLib : Microsoft ActiveX Data Objects 2.0 Library
    // {00000200-0000-0010-8000-00AA006D2EA4}
    #ifdef IMPLIB
    importlib("implib\\x86\\release\\ado\\msado15.dll");
    #else
    importlib("msado20.dll");
    #endif    [
      odl,
      uuid(D80DE8B5-0001-11d1-91E6-00C04FBBBFB3),
      version(1.0)
    ]
    interface IDataFactoryHandler : IUnknown
    {
HRESULT _stdcall GetRecordset(
      [in] BSTR conn,
      [in] BSTR args,
      [in] BSTR query,
      [out, retval] _Recordset **ppRS);// DataFactory 将在调用 Reconnect 后
// 使用记录集的 ActiveConnection 属性。
   HRESULT _stdcall Reconnect(
      [in] BSTR conn,
      [in] BSTR args,
      [in] _Recordset *pRS);
    };
};
www.holmesian.org