วิธีทำฉันอ้างคุณสมบัติในการให้บริการของฉัน?

ค้นหาคุณสมบัติกลุ่มและ ID คุณสมบัติสำหรับคุณสมบัติคุณต้องการ (ดู OLE DB คุณสมบัติในการอ้างอิงของ OLE DB Programmer.)

ตัวอย่างต่อไปนี้ถือว่า คุณกำลังจะได้รับคุณสมบัติจาก rowset รหัสสำหรับใช้เซสชันหรือคำสั่งเหมือน แต่ใช้อินเทอร์เฟซแตกต่างกัน?

สร้างวัตถุCDBPropsetใช้ในกลุ่มคุณสมบัติเป็นพารามิเตอร์ที่กำหนดเป็น ตัวอย่างเช่น:

CDBPropSet propset(DBPROPSET_ROWSET)

โทรAddPropertyผ่าน ID คุณสมบัติและค่าจะกำหนดคุณสมบัติ ชนิดของค่าขึ้นอยู่กับคุณสมบัติคุณใช้?

CDBPropSet propset(DBPROPSET_ROWSET)
propsetAddProperty(DBPROP_IRowsetChange, true)
propsetAddProperty (DBPROP_UPDATABILITY
DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE)

ใช้ข้อมูลสมาชิก m_spUnkSite รับตัวชี้ไปยังวัตถุที่สร้างวัตถุของคุณ?

 CAgentRowsetltCMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis

CComQIPtr < IRowsetInfo และ IID_IRowsetInfo > spRowsetProps = pRowset

ใช้อินเทอร์เฟซสำหรับIRowsetโทรGetProperties ผ่านคุณสมบัติที่กำหนดเป็นพารามิเตอร์ นี่คือรหัสขั้นสุดท้าย:

CAgentRowsetltCMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis

CComQIPtr < IRowsetInfo และ IID_IRowsetInfo > spRowsetProps = pRowset

ตั้งค่าAddPropertyID(DBPROP_BOOKMARKS)
DBPROPSET * pPropSet = NULL
ULONG ulPropSet = 0
Hresult ใน hr

ถ้า (spRowsetProps)
   hr = spRowsetProps - > GetProperties (1, & ชุด & ulPropSet และ pPropSet);

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

ถ้า (SUCCEEDED(hr) & & (var.boolVal == VARIANT_TRUE))
   {
      …
   }
}

Index