الحصول على بيانات التعريف مع مجموعات الصفوف المخطط

أحياناً تحتاج للحصول على معلومات حول الموفر أو مجموعة الصفوف أو الجدول أو الأعمدة أو معلومات قاعدة بيانات أخرى دون فتح مجموعة الصفوف. البيانات حول بنية قاعدة البيانات تسمى بيانات التعريف ويمكن استردادهـا بواسطة العديد من الأساليب المختلفة. أسلوب منهم هو استخدام مجموعات صفوف مخطط.

توفر قوالب OLE DB مجموعة من الفئات لاسترداد معلومات المخطط; تقوم هذه الفئات بإنشاء مجموعات صفوف مخطط معرف مسبقاً و هى مسرودة في فئات مجموعة صفوف المخطط وفئات Typedef.

ملاحظة

إذا كنت تستخدم OLAP و بعض مجموعات الصفوف الخاصة بك غير معتمدة من قبل فئات مجموعة صفوف المخطط (على سبيل المثال، لديك عدد متغير من الاعمدة) ، يجب استخدام CManualAccessor أو CDynamicAccessor. يمكنك التمرير خلال الأعمدة و عبارات حالة الاستخدام لمعالجة أنواع البيانات الممكنة لكل عمود.

نموذج الكتالوج/المخطط

تقوم ANSI SQL بتعريف نموذج كتالوج/مخطط لتخزين البيانات; يستخدم OLE DB هذا النموذج. في هذا النموذج، تحتوي الكتاوجات (قواعد البيانات) على مخططات و تحتوى المخططات على جداول.

  • الكتالوج   الكتالوج هو اسم آخر لقاعدة بيانات. وهو مجموعة مخططات ذات الصلة. لسرد الكتالوجات (قواعد البيانات) التي تنتمي لمصدر بيانات معطى، استخدم CCatalog. لأن العديد من قواعد البيانات لها كتالوج واحد فقط, بيانات التعريف تسمى أحياناً ببساطة معلومات المخطط.

  • المخطط  المخطط عبارة عن مجموعة من كائنات قاعدة البيانات التي يتم امتلاكها أو تم إنشاؤها من قبل مستخدم معيّن. ‏‫لسرد المخططات المملوكة لمستخدم محدد ، استخدم CSchemata.

    طبقاً لمصطلحات Microsoft SQL Server و ODBC 2.x المخطط هو المالك (على سبيل المثال، dbo اسم مخطط نموذجي). كما يقوم SQL Server بتخزين بيانات التعريف في مجموعة من الجداول: جدول واحد يحتوي على قائمة من كافة الجداول ويحتوي جدول آخر على قائمة لكافة ‏‫الأعمدة‬. لا توجد أي مكافئ للمخطط في قاعدة بيانات Microsoft Access.

  • الجدول   الجداول مجموعات من الأعمدة مرتبة في ترتيب معين. ‏‫‏‫لسرد الجداول المعرفة في الكتالوج المعطى (قاعدة بيانات) ومعلومات حول هذه الجداول ، استخدم CTables).

Restrictions (تقييدات)

عند الاستعلام عن معلومات المخطط يمكنك استخدام قيود لتحدد نوع المعلومات التي تكون محل الاهتمام. يمكنك اعتبار القيود كعامل تصفية أو مؤهل في استعلام. على سبيل المثال، في الاستعلام:

SELECT * FROM authors where l_name = 'pivo'

l_name هو قيد. هذا مثال بسيط للغاية بقيد واحد فقط; فئات مجموعة صفوف المخطط تدعم قيود عديدة.

فئات typedef لمجموعة صفوف المخطط تغلف كافة مجموعة صفوف مخطط OLE DB بحيث يمكن الوصول إلى مجموعة صفوف مخطط تماماً مثل أي مجموعة صفوف أخرى عن طريق إنشاء مثيل و فتحه. على سبيل المثال، فئة typedef CColumns تُعرّف كـ:

CRestrictions<CAccessor<CColumnsInfo>

فئة CRestrictions توفر دعم التقييد. بعد إنشاء مثيل مجموعة صفوف المخطط، قم بـاستدعاء CRestrictions::Open. هذا الأسلوب يقوم بإرجاع مجموعة نتائج تستند إلى القيود التي تحددها.

لتحديد قيود ، إرجع إلى الملحق ب: مجموعة صفوف المخطط و ابحث عن مجموعة الصفوف الذي تستخدمها. على سبيل المثال، يتوافق CColumns مع مجموعة الصفوف COLUMNS; يسرد هذا الموضوع أعمدة القيود في مجموعة الصفوف COLUMNS: TABLE_NAME ،TABLE_CATALOG ،TABLE_SCHEMA ، COLUMN_NAME. يجب أن تتبع الترتيب في تعيين القيود الخاصة بك.

كذلك, على سبيل المثال، إذا كنت تريد التقييد باسم الجدول، لاحظ أن TABLE_NAME عمود القيود الثالث، ثم قم بـاستدعاء Open ، و حدد اسم الجدول المطلوب كمعلمة القيود الثالثة ، كما هو موضح في المثال التالي.

لاستخدام مجموعات صفوف المخطط

  1. يجب أن تقوم بتضمين ملف الرأس Atldbsch.h (بالطبع، تحتاج Atldbcli.h لدعم المستهلك أيضاً).

  2. قم بـإنشاء مثيل كائن مجموعة صفوف المخطط في ملف الرأس الخاص بالعملاء أو بالمستند. إذا كنت تريد معلومات جدول, تقوم بالتصريح بكائن CTables ; إذا كنت تريد معلومات عمود قم بالتصريح بكائن CColumns. يوضح هذا المثال كيفية استرداد الأعمدة في جدول authors (المؤلفون):

    CDataSource ds;
    ds.Open();
    CSession ss;
    ss.Open();
    CColumns ColumnSchemaRowset;
    // TABLE_NAME is the third restriction column, so
    // specify "authors" as the third restriction parameter:
    hr = ColumnSchemaRowset.Open(ss, NULL, NULL, "authors");
    hr = ColumnSchemaRowset.MoveFirst();
    while (hr == S_OK)
    {
       hr = ColumnSchemaRowset.MoveNext();
    }
    
  3. لإحضار المعلومات ، قم بـالوصول لعضو البيانات المناسب لكائن مجموعة صفوف المخطط، على سبيل المثال، ColumnSchemaRowset.m_szColumnName. هذا يوافق COLUMN_NAME. لمشاهدة أي أعمدة OLE DB تناظر أى عضو, راجع CColumns.

لمرجع مجموعة صفوف المخطط، فئات typedef الموفرة في قوالب OLE DB (راجع فئات مجموعة صفوف المخطط و فئات Typedef).

للحصول على مزيد من المعلومات حول مجموعة صفوف المخطط OLE DB بما في ذلك أعمدة القيود راجع الملحق ب: مجموعة صفوف المخطط في مرجع OLE DB للمبرمجين.

للحصول على أمثلة أكثر تعقيداً حول استخدام فئات مجموعة صفوف المخطط، راجع نماذج CatDB و DBViewer .

للحصول على معلومات حول دعم ‏مجموعة صفوف المخطط، راجع دعم ‏‫مجموعة صفوف المخطط.

راجع أيضًا:

المبادئ

استخدام الموصلات (Accessors)