OLE DB プロバイダへの文字列の格納
更新 : 2007 年 11 月
ATL OLE DB プロバイダ ウィザードでは、MyProviderRS.h に CWindowsFile という既定のユーザー レコードが作成されます。2 つの文字列を処理するには、CWindowsFile を変更するか、次のコードに示すように独自のユーザー レコードを追加します。
////////////////////////////////////////////////////////////////////////
class CAgentMan:
public WIN32_FIND_DATA
DWORD dwBookmark; // Add this
TCHAR szCommand[256]; // Add this
TCHAR szText[256]; // Add this
TCHAR szCommand2[256]; // Add this
TCHAR szText2[256]; // Add this
{
public:
BEGIN_PROVIDER_COLUMN_MAP()
PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command"), 1, 256, GUID_NULL, CAgentMan, szCommand)
PROVIDER_COLUMN_ENTRY_STR(OLESTR("Text"), 2, 256, GUID_NULL, CAgentMan, szText)
PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command2"), 3, 256, GUID_NULL, CAgentMan, szCommand2)
PROVIDER_COLUMN_ENTRY_STR(OLESTR("Text2"),4, 256, GUID_NULL, CAgentMan, szText2)
END_PROVIDER_COLUMN_MAP()
bool operator==(const CAgentMan& am) // This is optional
{
return (lstrcmpi(cFileName, wf.cFileName) == 0);
}
};
データ メンバ szCommand と szText は、2 つの文字列を表します。必要に応じて、szCommand2 と szText2 で追加の列を用意します。dwBookmark データ メンバは、この単純な読み取り専用プロバイダには不要ですが、後で IRowsetLocate インターフェイスを追加する際に使用します。「単純な読み取り専用プロバイダの機能の拡張」を参照してください。== 演算子はインスタンスを比較します。この演算子の実装は省略できます。
この処理が終了すると、プロバイダはいつでもコンパイルして実行できます。プロバイダをテストするには、対応する機能を持つコンシューマが必要です。「単純なコンシューマの実装」に、このようなテスト コンシューマの作成方法を示します。テスト コンシューマをプロバイダと共に実行します。[テスト コンシューマ] ダイアログ ボックスの [実行] ボタンをクリックしたときに、テスト コンシューマが適切な文字列をプロバイダから取得することを確認します。
プロバイダのテストが正常に終了すると、追加のインターフェイスを実装することにより、プロバイダの機能を拡張できます。「単純な読み取り専用プロバイダの機能の拡張」で例を示します。