المتابعون للمدونة

الثلاثاء، 29 أغسطس 2017

DbDataSourceEnumerator Class


 فئة عداد مصادر البيانات
DbDataSourceEnumerator Class 

هذه الفئة أساسية مجردة، لكن حتى الآن لا ترثها إلا الفئة SqlDataSourceEnumerator، لأن قواعد بيانات سيكويل سيرفر هي التي تعمل على خادم، سواء أكان خادما محليا Local أو بعيدا Remote.
وتتيح لك هذه الفئة الحصول على معلومات عن الخوادم المتوفرة حاليا على الشبكة التي يتصل بها جهاز العميل.
وتمتلك هذه الفئة الوسيلة الوحيدة التالية: 

 معرفة مصادر البيانات GetDataSources:
تعيد جدول بيانات DataTable، يحتوي على صفوف فيها تفاصيل الخوادم المتاحة.. ويعرض هذا الجدول الأعمدة التالية: 

ServerName
اسم خادم البيانات.
InstanceName
اسم النسخة التي تعمل من الخادم.. لاحظ أن سيكويل سيرفر يتيح تشغيل أكثر من نسخة من الخادم.
IsClustered
True إذا كان الخادم جزءا من تجمع Cluster من الخوادم.
Version
إصدار الخادم.

ويمكنك استخدام هذه الوسيلة لتعرض للمستخدم قائمة بأسماء الخوادم المتاحة، ليختار الخادم الذي يريد أن يتصل به.. لكن عليك أن تلاحظ ما يلي:
- هذه الوسيلة تستهلك وقتا عند تنفيذها، بسبب بحثها عن الخوادم المتاحة على الشبكة.
- ناتج هذه الوسيلة قد يختلف من مرة إلى أخرى، بسبب ظهور بعض الخوادم أو اختفائها!
- هذه الوسيلة قد لا تعيد كل الخوادم المتاحة فعلا، لهذا عليك أن تعرض للمستخدم مربع نص أيضا، ليكتب اسم الخادم بنفسه إذا لم يجده في القائمة.
وقد استخدمنا هذه الوسيلة في المشروع DataProviders لنعرض في الجدول السفلي، الخوادم المتاحة على المزود المحدد في الجدول العلوي.. لفعل هذا، استخدمنا الحدث RowEnter الخاص بجدول العرض DataGridView، وفيه استخدمنا رقم الصف للحصول على كائن صف البيانات DataRow المناظر له في جدول المزودات، وأرسلنا هذا الصف إلى الوسيلة DbProviderFactories.GetFactory للحصول على مصنع مزود البيانات:
Dim R = TblProviders.Rows(e.RowIndex)
Dim Pf = DbProviderFactories.GetFactory(R)
بعد هذا استخدمنا الوسيلة CanCreateDataSourceEnumerator للتأكد من أن المزود يتيح عرض الخوادم، ومن استخدمنا الوسيلة CreateDataSourceEnumerator للحصول على عداد الخوادم، ومنه حصلنا على  الجدول الذي يحتوي على تفاصيل هذه الخوادم باستخدام الوسيلة GetDataSources وعرضناه في جدول العرض:
If Pf.CanCreateDataSourceEnumerator Then
    Dim Se = Pf.CreateDataSourceEnumerator
    Dim TblServers = Se.GetDataSources
    DgServers.DataSource = TblServers
Else
    DgServers.DataSource = Nothing
End If
عند تجربة هذا البرنامج على جهازك، لن تظهر أية خوادم إلا عند اختيار مزود سيكويل سيرفر، حيث سيظهر الخادم المحلي Local Server المعرف على جهازك (وهو يمتلك نفس اسم جهازك) وفي الغالب لن يظهر الخادم SQLEXPRESS الذي يعمل على هذا الخادم المحلي! 

من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:

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

إرسال تعليق

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

صفحة الشاعر