الغاية من تصميم هذا الكلاس هي للاتصال بـ SQL SERVER و من ثم الحصول على قواعد البيانات فيه
و التعامل مع قاعدة يحددها المبرمج و استجلاب جداولها او اي جدول تحدده انت
و من ثم استجلاب كل حقول الجدول او الحقول التي تحددها انت
ومن ثم عمل خصائص للحقول للتعامل معها من حيث الاضافة و الحذف و التعديل
ملاحظة: للذين يعملون مع برامج قواعد البيانات الخاصة بـ SQL SERVER الكل يعرف انني اذا اردت التعامل مع جدول ما من خلال برنامجي فان هناك العديد من الطرق منها
يحبذ البعض كتابة نص الاتصال الى القاعدة المحددة و من ثم كتابة جمل الاستعلام الخاصة به لجلب البيانات و من ثم التعامل مع كائنات لغة البرمجة التي تستقبل جمل استعلام SQL و من ثم تنفيذ هذه الجمل سواء كانت للاضافة او الحذف او التعديل
و البعض الاخر يعمل وفق تقنيات حديثة تقضي بعمل كائن مشابه للجدول او القاعدة (اقصد هنا تقنية التعامل مع لغة Linq) و يكون هذا الكائن بالاساس مشابه للاصل و لكن ضمن وحدة برمجية Class و ضمن هذا الكلاس يتم فرض هيكلية كاملة للقاعدة بكل ما تحويه من جداول و علاقات و حقول و اجراءات و وظائف و كل شيئ
و فق خصائص و طرق عندها تصبح هذه الوحدة تحتوي على كائنات معرفة بشكل مستقل ضمن اللغة (كما كان يحدث مع تقنية المعالج) عند هذه النقطة يمكن للمبرمج ان يستغني عن تقنية SQL و يتخاطب مع الكائنات الجديدة وفق لغة خاصة Linq اذا ان الوصول للكائنات الجديدة اصبح متاح و بشكل يسير كوننا قمنا بتعريفها ضمن فئات خاصة لذا ستجد ان محرر الكود سيدعم لك الوصول السريع لهذه الكائنات , كل هذا جميل و رائع لكن توقف لحظة ما الذي سيجري في الخلفية من سيتخاطب مع القاعدة و باي لغة ؟؟ لا تتعب نفسك اخي الكريم القاعدة لا تفهم الا لغة واحدة SQL الفرق الوحيد انك لن تحتاج الى تعلم SQL اذا ما كنت جاهلا بها سيتكفل محرك اللغة بالقيام باي عمليات خاصة مع القاعدة وفق SQL (عود على بدء).
لكي تتضح الامور اكثر سنقوم بالشرح وفق كل كود سنتعامل معه و ستتوفر لدينا الكثير من المعلومات الجيدة اذا كنت تنوي المتابعة معي و ستفهم آلية العمل بشكل مفصل يمكنك من توسيع الكلاس الذي سنقوم بعمله هنا لناسب حاجتك.
اولا قم بانشاء مشروع جديد من النوع Class Library
ثم سميه ServSite او اي اسم يعجبك هذا الاسم اخترته لان هناك جزئية تختص بالسيرفر ربما اذا توفر لدي الوقت ساتكلم عنه لاحقا
الان اصبح لديك Class جديد في المشروع اسمه ServSite
هذا الكلاس ساستخدمه للاتصال بالسيرفر لجلب السيرفرات المثبته على الجهاز و تاسيس الاتصال مع السيرفر المطلوب و من ثم جلب القواعد و تاسيس اتصال مع قاعدة محددة و استجلاب جداولها و التعامل مع جدول محدد فقط.
و سيكون لدي كلاس اخر في المشروع يختص بالعمليات على قواعد البيانات سيرث خصائص من الكلاس السابق ServSite
في البداية اذا كنت لم تتطلع على هذا الموضوع هنا الغزل مع SQL SERVER
انصحك بقرائته لانني قمت بشرحه بشكل مفصل لتعرف طريقة الاتصال باي سيرفرات مثبته على الجهاز
مادامت الاكواد تخدمني لعمل اتصال باي سيرفر و تاسيس اتصال معه و مع القواعد داخله لذا فليس من المنطقي ان اقوم بتجاهل هذه الميزة
و الاتجاه الى الطرق اليدوية للاتصال بالسيرفر سواء عن طريق الاعدادت او التعامل مع الملفات النصية
في بداية الكلاس و بعد قرائتك للموضوع السابق سنستورد بعض المراجع للتعامل معها
PHP كود :
الكود:
[center][b]Imports Microsoft.SqlServer.Management.Common[/b][/center]
[center]Imports Microsoft.SqlServer.Management.Smo[/center]
[center]Imports Microsoft.Win32[/center]
[center]Imports System.Data.SqlClient[/center]
[center]Public Class ServSite [/center]
و ساعرف مجموع من الكائنات التي ساحتاجها ان وضعت الشرح في داخل الكود مع كل كائن
PHP كود :
الكود:
[center][size=13][b] ''' <summary>[/b][/size][/center]
[center] ''' متغير من النوع سيرفر[/center]
[center] ''' نستخدمه للتعامل مع السيرفر[/center]
[center] ''' </summary>[/center]
[center] ''' <remarks></remarks>[/center]
[center][size=13] Protected Shared Srv As New Server[/size][/center]
[center][color=#dd0000][font=Monaco, Consolas, Courier, monospace]
[/font][/color][/center]
[center][color=#dd0000][font=Monaco, Consolas, Courier, monospace] ''' [/font][/color]<summary>[/center]
[center] ''' متغير من النوع اتصالات السيرفر[/center]
[center] ''' نستخدمه لتمرير اتصال للسيرفر[/center]
[center] ''' </summary>[/center]
[center] ''' <remarks></remarks>[/center]
[center] Protected Shared srvcon As New ServerConnection[/center]
[center][color=#0000bb][font=Monaco, Consolas, Courier, monospace]
[/font][/color][/center]
[center][color=#0000bb][font=Monaco, Consolas, Courier, monospace] [/font][/color]''' <summary>[/center]
[center] ''' متغير من النوع اتصالات السيكوال نستخدمه للاتصال بقاعدة البيانات[/center]
[center] ''' </summary>[/center]
[center] ''' <remarks></remarks>[/center]
[center] Protected Shared SqlConnection As New SqlConnection[/center]
[center][color=#0000bb][font=Monaco, Consolas, Courier, monospace]
[/font][/color][/center]
[center][color=#0000bb][font=Monaco, Consolas, Courier, monospace] [/font][/color]''' <summary>[/center]
[center] ''' مصفوفة لتخزين اسماء السيرفرات[/center]
[center] ''' </summary>[/center]
[center] ''' <remarks></remarks>[/center]
[center] Protected Shared SrvNameArray() As String[/center]
[center][color=#0000bb][font=Monaco, Consolas, Courier, monospace]
[/font][/color][/center]
[center][color=#0000bb][font=Monaco, Consolas, Courier, monospace] [/font][/color]''' <summary>[/center]
[center] ''' مصفوفة لتخزين اسماء قواعد البيانات[/center]
[center] ''' نستثني قواعد بيانات النظام[/center]
[center] ''' </summary>[/center]
[center] ''' <remarks></remarks>[/center]
[center][size=13] Protected Shared srvdbnames() As String[/size][/center]
[center][color=#dd0000][font=Monaco, Consolas, Courier, monospace]
[/font][/color][/center]
[center][color=#dd0000][font=Monaco, Consolas, Courier, monospace] ''' [/font][/color]<summary>[/center]
[center] ''' مصفوفة لتخزين اسماء الجداول في القاعدة المحددة[/center]
[center] ''' </summary>[/center]
[center] ''' <remarks></remarks>[/center]
[center][size=13] Protected Shared TablesSrvDbs() As String[/size][/center]
[center][color=#dd0000][font=Monaco, Consolas, Courier, monospace]
[/font][/color][/center]
[center][color=#dd0000][font=Monaco, Consolas, Courier, monospace] ''' [/font][/color]<summary>[/center]
[center] ''' متغير نصي نخزن فيه اسم القاعدة المحددة[/center]
[center] ''' </summary>[/center]
[center] ''' <remarks></remarks>[/center]
[center][size=13] Protected Shared SqlDbName As String[/size][/center]
[center][color=#dd0000][font=Monaco, Consolas, Courier, monospace]
[/font][/color][/center]
[center][color=#dd0000][font=Monaco, Consolas, Courier, monospace] ''' [/font][/color]<summary>[/center]
[center] ''' متغير نصي نخزن فيه نص الاتصال مع قاعدة البيانات[/center]
[center] ''' </summary>[/center]
[center] ''' <remarks></remarks>[/center]
[center] Protected Shared _SqlConnectionString As String [/center]
بالنسبة للجزئية الخاصة [size=32]XML Tags for Documentation [/size] الظاهرة ضمن الاكود اذا ما لم تتعامل معها سابقا
ساقول لك بانها طريقة جميلة للتعليق على الوظائف و معرفة الغرض منها اثناء اعادة استخدامها .
الفائدة منها تاتي عند تعريفك للكائن في وحدة برمجية جديدة ستاتيك المعلومات المرافقة للكائن و التي كنت قد كتبتها سابقا تمام كما يحصل مع اي كائنات ضمن اللغة عندما يقف عليها المؤشر
الجميل فيها ايضا يمكنك تمرير معلومات تفصيلية عن البارمترات التي تريد تمريرها كذلك وضع ملاحظات مفصلة كما تحب و كلها ضمن Tag Xml واحد