プロバイダーでのプロパティの参照

必要なプロパティのプロパティ グループとプロパティ ID を検索します。 詳細については、『OLE DB プログラマ ガイド』の OLE DB のプロパティに関するページを参照してください。

次の例は、行セットからプロパティを取得しようとしていると想定しています。 セッションまたはコマンドを使用するためのコードも同様ですが、使用するインターフェイスは異なります。

プロパティ グループをコンストラクターのパラメーターとして使用して、CDBPropSet オブジェクトを作成します。 次に例を示します。

CDBPropSet propset(DBPROPSET_ROWSET);

AddProperty を呼び出して、プロパティ ID とプロパティに割り当てる値を渡します。 値の型は、使用するプロパティによって異なります。

CDBPropSet propset(DBPROPSET_ROWSET);

propset.AddProperty(DBPROP_IRowsetChange, true);

propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE);

IRowset インターフェイスを使用して GetProperties を呼び出します。 プロパティ セットをパラメーターとして渡します。 最終的なコードを次に示します。

CAgentRowset<CCustomCommand>* pRowset = (CAgentRowset<CCustomCommand>*) pThis;

CComQIPtr<IRowsetInfo, &IID_IRowsetInfo> spRowsetProps = pRowset;

DBPROPIDSET set;
set.AddPropertyID(DBPROP_BOOKMARKS);

DBPROPSET* pPropSet = NULL;
ULONG ulPropSet = 0;

HRESULT hr;

if (spRowsetProps)
   hr = spRowsetProps->GetProperties(1, &set, &ulPropSet, &pPropSet);

if (pPropSet)
{
   CComVariant var = pPropSet->rgProperties[0].vValue;
   CoTaskMemFree(pPropSet->rgProperties);
   CoTaskMemFree(pPropSet);

   if (SUCCEEDED(hr) && (var.boolVal == VARIANT_TRUE))
   {
      ...  // Use property here
   }
}

関連項目

OLE DB プロバイダー テンプレートの操作