06-10-12, 12:22 AM
كاتب الموضوع : silverlight
مقال: كيفية الاستغناء عن الداتا بيز التقليدية في برامجنا – ألجزء الأولاللغة المستخدمة: الفيجوال بيسك
التطبيق: فيجوال استوديو 2005 و 2008
المستوي: التقييم متروك للقارئ
إعداد: مهندس / عمر أمين إبراهيم
في الواقع سبب كتابة هذا المقال أنني قد لاحظت ان الكثير من الزملاء وخصوصا المبتدئين في عالم البرمجة يعانون قليلا مع الداتا بيز لذلك ارد أن أوضح لهم كيف يمكن الإستغناء عن الداتا بيز التقليدية واستبدالها بطرق أخري
عندما نريد تخزين أو تجميع ثم استعادة بيانات بشكل عام فإن أول شئ سوف يخطر ببالنا هو استخدام الداتا بيز وبناء ملفات ببرامج الداتا بيز الشهيرة ومن ثم نقوم بربطها ببرامجنا ونتعامل معها من حيث عرض وتخزين واسترجاع البيانات الموجودة في الداتا بيز
ومن أشهر الأنظمة التي نستخدمها في برامج الداتا بيز هي SQL, MS Access, and Oracle بالإضافة الي بعض النظم الاخري مثل FireBird و MySQL و PostgreSQL وسنلاحظ هنا أن مايكروسوفت تملك نظامين مختلفين وهما الأكسس و SQL
السؤال: هل نحن بحاجه إلي التعامل مع تلك الأنظمة؟ و هل نحن بحاجه الي الاعتماد كليا علي مثل هذه الأنظمة في برامجنا؟ هل يمكن الاستغناء عن تلك الأنظمة؟ في الواقع إجابة مثل هذه الأسئلة مرتبط بك عزيز القارئ وبكيفية الطريقة التي تفكر بها وأيضا مرتبط مع شئ أخر مهم جدا هو قدراتك البرمجية وقدراتك علي التنويع والتخطيط ومن ثم تحديد ما تحتاجه بالفعل أو ما يحتاجه البرنامج الذي تكتبه
في الواقع إن استخدام الداتا بيز في برامجنا سوف يضيف نوع من الصعوبة الي البرنامج الذي تصممه وهذا قد يؤدي الي شيئين لا ثالث لهما إما أن يكون البرنامج ناجحا أو فاشلا والسبب أنه عليك أن تتعامل مع أشياء كثيرة مثل Security و database Structure و كيفية الدخول الي الداتا بيز واستدعاء البيانات ثم عرضها ثم تخزينها مرة أخري إلي أخر مثل هذه الأشياء.
ولكي لا نبخس ملفات الداتا بيز حقها تماما فإنه أحيانا يكون استخدام الداتا بيز هو أفضل اختيار ممكن استخدامه في عرض وتخزين البيانات داخل برامجنا لكن كل ذلك يعتمد علي حاجة البرنامج الذي نصممه وهل البيانات التي نتعامل معها كثيرة جدا أو تحديدا هل هي من النوع الي يطلق عليه Complex database عموما كل ذلك يعتمد علي الغرض من البرنامج الذي تصممه.
أيضا هناك سؤال هام جدا علينا أن نسأله لأنفسنا وهو ماذا كان يفعل المبرمجون قبل وجود برامج مثل Oracle وMS Access و SQL وغيرهم. من المؤكد أنه كانت هناك طرق أخري لعرض البيانات بدون الحاجة إلي استخدام مثل هذه الأنظمة.
عموما علينا أن لا ننسي أن هناك طرق أخري من الممكن إسخدامها لعرض البيانات وهي سوف تعوضنا عن استخدام الداتا بيز ومن هذه الطرق استخدام XML و Serialization و Text Files و Binary Files الي أخره من مثل هذه الأشياء
ولكي لا أطيل عليك عزيز القارئ هيا بنا نكتشف كيفية الاستغناء عن ملفات الداتا بيز التقليدية ولنبدأ هنا بأسهل الطرق وهي عرض البيانات التي هي عبارة عن Read-Only وهي البيانات التي من الممكن إضافتها الي برامجنا كنوع من الداتا بيز ولكن ليس علي المستخدم التعديل بها
الجزء الأول: عرض البيانات ReadOnly
لنفتح مشروعا جديدا في الفيجوال استوديو ونطلق عليه dbReadsOnly مثلا ثم نضيف الي المشروع Class سوف نطلق عليه Students مثلا.
طبعا ممكن إضافة الكلاس بشكل منفرد الي المشروع من قائمة Projects واختيار Add Class كما هوا موضح بالكود أدناه وهذه هي الطريقة الأفضل
كود :
Public Class Students
End Class
كود :
Public Class Form1
End Class
Public Class Students
End Class
طبعا من الممكن أن نضيف أي عدد من المتغيرات الأخري لكن لكي نعقد الأمر كثيرا سنضيف فقط المتغيرات التالية وهي ستكتب بالشكل التالي داخل الكلاس Students وكما تلاحظون أضفتها داخل Region Directive كنوع من التنظيم للكود ليس إلا
كود :
Public Class Students
#Region "Constants"
Private m_ID As Integer
Private m_firstName As String
Private m_secondName As String
Private m_fullName As String
#End Region
End Class
Public Property FirstName () As String ثم نضغط علي مفتاح Enter وسيقوم الفيجوال استوديو بإضافة باق الكود بمجرد الضغط علي مفتاح Enter أي انه يضيف لها Get و End Get ثم (ByVal value As String) Set ثم End Set ثم أخيرا End Property وسيكون شكل Property كالأتي وهي كما نري لا تسترجع أي قيمة حتى الأن
كود :
Public Property FirstName() As String
Get
End Get
Set(ByVal value As String)
End Set
End Property
كود :
Public Property FirstName() As String
Get
Return m_firstName
End Get
Set(ByVal value As String)
m_firstName = value
End Set
End Property
كود :
Public Class Students
#Region "Constants"
Private m_ID As Integer
Private m_firstName As String
Private m_secondName As String
Private m_fullName As String
#End Region
#Region "Property"
Public Property ID() As Integer
Get
Return m_ID
End Get
Set(ByVal value As Integer)
m_ID = value
End Set
End Property
Public Property SecondName() As String
Get
Return m_secondName
End Get
Set(ByVal value As String)
m_secondName = value
End Set
End Property
Public Property FirstName() As String
Get
Return m_firstName
End Get
Set(ByVal value As String)
m_firstName = value
End Set
End Property
Public ReadOnly Property FullName() As String
Get
Return FirstName & " " & SecondName
End Get
End Property
#End Region
#Region "Constructor"
Public Sub New()
End Sub
Public Sub New(ByVal ID As Integer)
m_ID = ID
End Sub
Public Sub New(ByVal ID As Integer, ByVal fName As String)
m_ID = ID
m_firstName = fName
End Sub
Public Sub New(ByVal ID As Integer, ByVal fName As String, ByVal sName As String)
m_ID = ID
m_firstName = fName
m_secondName = sName
End Sub
Public Sub New(ByVal ID As Integer, ByVal fName As String, ByVal sName As String, ByVal FullName As String)
m_ID = ID
m_firstName = fName
m_secondName = sName
m_fullName = FullName
End Sub
#End Region
End Class
سنلاحظ في الكلاس أعلاه أن هناك صفة قد تم إضافتها علي أنها Read Only Property وهي الصفة الخاصة بالاسم كاملا والهدف منها أننا لن نضيفها ولكنه ستظهر اتوماتيكيا داخل الفورم أو الكونترول الذي سوف نستخدمه لعرض البيانات وسيتم ذلك بمجرد تعريف المتغيران اللذان يعبران عن الاسم الأول والاسم الثاني علي التوالي
أيضا سنلاحظ أننا قد أضفنا الكثير من Constructor الي الكلاس لتوضيح فقط كيف يتم ذلك
الأن كيف نربط الكلاس Students ونستخدمه في عرض بيانات داخل الفورم
تختلف عملية الربط بين الكلاس Students و الفورم بناء علي نوع الكونترول الذي سوف نستخدمه في إظهار البيانات للمستخدم وسوف أعطي أكثر من مثال لكي يتضح الأمر للقارئ طبعا أفترض أن قارئ هذا المقال لدية خلفية جيده في التعامل مع الكونترول المختلفة الموجودة داخل الفيجوال استوديو مثل الكومبوبوكس ComboBox و الداتا جريد فيو DataGridView و اللست بوكس ListBox إلي أخره من الكونترول