أهم أقسام المدونة

الصفحات

السبت، 8 أبريل 2017

IDataAdapter.FillSchema


 ملء المخطط IDataAdapter.FillSchema:

تملأ مجموعة البيانات بمخطط البيانات Schema.. هذا معناه أن الجداول الناتجة عن الاستعلام وتفاصيل أعمدتها ستضاف إلى مجموعة البيانات، لكن دون إضافة أي سجلات إليها.. بتعبير آخر: سيتم ملء مجموعة البيانات بجداول فارغة.

وتستقبل هذه الوسيلة معاملين:

- كائن مجموعة البيانات DataSet الذي سيتم ملؤه بالمخطط.

- إحدى قيم المرقم SchemaType، تحدد ماذا سيحدث لو كان موصل البيانات يحتوي مسبقا على خرائط للجداول والأعمدة Mappings، وهذه القيم هي:

 

Source
تجاهل خرائط الجداول وخرائط الأعمدة، وملء مجموعة البيانات بنفس أسماء الجداول والأعمدة الأصلية الموجودة في المخطط Schema.
Mapped
استخدام خرائط الجداول وخرائط الأعمدة، وملء مجموعة البيانات بالأسماء الموجودة في هذه الخرائط بدلا من أسماء الجداول والأعمدة الأصلية.

 
ويتضمن المخطط الذي يتم ملء مجموعة البيانات به التفاصيل التالية:
- اسم الجدول، وأسماء الأعمدة.
- خصائص كل عمود، مثل:
أ. السماح بتركه فارغا AllowDBNull.
ب. هل هو متفرد Unique.
ج. هل هو للقراءة فقط ReadOnly.
د. هل يزيد تلقائيا AutoIncrement.. لكن عليك أنت تحديد معدل الزيادة وبداية العداد، فهما لا يضافان تلقائيا.
هـ. أقصى طول للبيانات في العمود MaxLength. 

- إذا كان المفتاح الأساسي Primary Key موجودا ضمن أعمدة النتيجة، يتم استخدامه كمفتاح أساسي للجدول في مجموعة البيانات.. وإذا لم يوجد مفتاح أساسي وكان هناك حقل متفرد القيمة Unique، يتم استخدامه كمفتاح أساسي للجدول في مجموعة البيانات، بشرط ألا يكون مسموحا بتركه فارغا (AllowDbNull = False).. أما إذا كان الحقل المتفرد يقبل القيمة NULL، فلن يستخدم كمفتاح أساسي، وستكتفي هذه الوسيلة بإضافة قيد التفرد UniqueConstraint الخاص بهذا العمود إلى مجموعة القيود ConstrainsCollection الخاصة بالجدول.

- أي قيود أخرى غير المفتاح الأساسي وقيد التفرد لا تضاف إلى الجدول، وعليك إضافتها بنفسك! 

وتعيد هذه الوسيلة مصفوفة جداول DataTable Array، تحتوي على كائنات الجداول التي تمت إضافة مخططاتها إلى مجموعة البيانات.

ويمكنك بعد استخدام هذه الوسيلة، استخدام الوسيلة Fill لملء الجداول بالبيانات.. لكن كما ذكرنا سابقا، فإن استدعاء الوسيلة Fill بمفردها يضيف مخططات الجداول والسجلات معا إلى مجموعة البيانات، ما يغني في معظم الحالات عن استدعاء الوسيلة FillSchema أولا.

إذن.. فما فائدة هذه الوسيلة؟

تفيدك هذه الوسيلة إذا أردت عرض الجداول فارغة للمستخدم ليدخل بيانات جديدة دون أن يعبث بالبيانات القديمة.. هذا هو ما فعلناه في المشروع UpdateErrors، حيث سيعرض جدول البيانات أعمدة جدول المؤلفين، لكنه لن يعرض بيانات أي مؤلفين، وبهذا يستطيع المستخدمن إدخال مؤلفين جددا وحفظهم في قاعدة البيانات، دون أن يغير بيانات المؤلفين السابقين.

تفيدك أيضا إذا أردت إنشاء المفتاح الأساسي في جدول مجموعة البيانات، فاستخدام الوسيلة Fill بمفردها لا ينشئ المفتاح الأساسي في الجدول الذي تضيفه إلى مجموعة البيانات، وهذا قد يسبب لك مشاكل في بعض الحالات التي تحتاج فيها إلى المفتاح الأساسي، كما يحدث عند استخدام الوسيلة DataSet.Merge لدمج السجلات، أو عند البحث عن سجل بدلالة مفتاحه الأساسي... إلخ. 

للمزيد من التفاصيل انظر الواجهة IDataAdapter.

 

 

 

 

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.