سجلات المستخدم

لاستخدام موصل ثابت (static accessor) (بحيث أن، الموصل مشتق من CAccessor) يجب أن يكون لدى المستهلك الخاص بك سجل مستخدم. سجل المستخدم هي فئة ++C تحتوي على عناصر بيانات للتعامل مع الإدخال أو الإخراج. يقوم معالج مستهلك ATL OLE DB بإنشاء سجل مستخدم للمستهلك الخاص بك. يمكنك إضافة أساليب إلى سجل المستخدم للمهام الاختيارية مثل التعامل مع الأوامر.

يُظهر نموذج التعليمات البرمجية التالي عيّنة من سجل يعالج الأوامر. في مستخدم السجلات، BEGIN_COLUMN_MAPيمثل مجموعة صفوف بيانات التي تم تمريرها إلى المستهلك من الموفر. BEGIN_PARAM_MAPيمثل التعيين من معلمات الأمر. يستخدم هذا المثال الفئة CCommand لمعالجة معاملات الأمر. تمثل أعضاء البيانات في إدخالات المخطط، الإزاحات إلى "كتلة واحدة قريبة" من الذاكرة لكل مثيل من الفئة. تتوافق وحدات الماكرو COLUMN_ENTRY مع وحدات الماكرو PROVIDER_COLUMN_ENTRY على جانب الموفر.

لمزيد من المعلومات حول وحدات الماكرو COLUMN_MAP و PARAM_MAP راجع وحدات الماكرو لقوالب مستهلك OLE DB.

class CArtists
{
public:
// Data Elements
   CHAR m_szFirstName[20];
   CHAR m_szLastName[30];
   short m_nAge;
 
// Column binding map
BEGIN_COLUMN_MAP(CArtists)
   COLUMN_ENTRY(1, m_szFirstName)
   COLUMN_ENTRY(2, m_szLastName)
   COLUMN_ENTRY(3, m_nAge)
END_COLUMN_MAP()
 
// Parameter binding map
BEGIN_PARAM_MAP(CArtists)
   COLUMN_ENTRY(1, m_nAge)
END_PARAM_MAP()
};

سجلات المستخدم المنشأة من قبل المعالج

إذا استخدمت معالج مستهلك ATL OLE DB لإنشاء مستهلك ، لديك خيار استخدام قوالب OLE DB أو سمات OLE DB. المعلومات البرمجية التي تم إنشاؤها مختلفة في كل حالة. لمزيد من المعلومات حول هذه التعليمة البرمجية راجع فئات مستخدم المنشأة من قبل المعالج.

دعم سجل المستخدم لـموصلات متعددة

للحصول على مناقشة مفصلة حول وحدات السيناريو التي تحتاج إليها لاستخدام موصلات متعددة, راجع استخدام Accessors متعددة على مجموعة الصفوف.

يظهر المثال التالي سجل المستخدم بعد التعديل لدعم موصلات متعددة على مجموعة الصفوف. بدلاً من BEGIN_COLUMN_MAP و END_COLUMN_MAP ، فهو يستخدم BEGIN_ACCESSOR_MAP BEGIN_ACCESSOR لكل الموصل. تقوم الماكرو BEGIN_ACCESSOR بتعيين رقم الموصل (الإزاحة من الصفر) و تعيين ما إذا كان الموصل هو موصل تلقائى (autoaccessor). تقوم Autoaccessors باستدعاء GetData لاسترداد البيانات تلقائياً عند استدعاء MoveNext. تتطلب موصلات غير تلقائية (nonautomatic accessors) استرداد البيانات بشكل صريح. قم باستخدام nonautomatic accessors إذا كنت تقوم بربط إلى حقل بيانات كبيرة (مثل صورة نقطية) التي ربما لا تريد استردادهـا لكل سجل.

class CMultiArtists
{
public:
// Data Elements
   CHAR m_szFirstName[20];
   CHAR m_szLastName[30];
   short m_nAge;
 
// Column binding map
BEGIN_ACCESSOR_MAP(CMultiArtists, 2)
   BEGIN_ACCESSOR(0, true)    // true specifies an auto accessor
    COLUMN_ENTRY(1, m_szFirstName)
    COLUMN_ENTRY(2, m_szLastName)
   END_ACCESSOR()
   BEGIN_ACCESSOR(1, false)   // false specifies a manual accessor
    COLUMN_ENTRY(3, m_nAge)
   END_ACCESSOR()
END_ACCESSOR_MAP()
};

راجع أيضًا:

المبادئ

قوالب OLE DB للمستهلك (++C)