السلام عليكم ورحمة الله وبركاتة
ملحق رقم 1 : إكتشف أسرار الDataSet .
كما وعدتكم من قبل ووعدت اخي العزيز / ياسر الشيخ , بالمشاركة في درس في ADO.NET من الصفر إلى الإحتراف .
ووضع بعض الملحقات لتغطية بعض النقاط التي تم التعريج عليها وإن شاء الله ان تكون هذه الملحقات مفيدة وواضحة للجميع
وأود ان اعتذر للجميع عن تأخري في طرح المشاركات في الفترة السابقة وذلك لإنشغالي الشديد في احد المشاريع التي اقوم بإعدادها واحمد الله قارب على
الإنتهاء وإن شاء الله سوف ادلو بما لدي من معلومات ليستفيد منها الجميع .
مقدمة : الData Set
هذه الأدات العجيبة والمرنة والتي تمكن المبرمج من الوصول الى كل مايريد لدرجة انني اعتبرها اخطبوط التحكم بقاعدة البيانات
حتى انني بدائت اشك بجدوى استخدام BindingSource وال DataView والBindingNavigator والادوات الاخرى وجدوى استخدامها ,
وبما أن 80% من قوعد البيانات التي تعتمد في الوضع المنفصل على الDataset فيجب ان لا يمر موضوعها مرور الكرام , سوف نتناولها بالتفصيل إن شاء الله
التكوين الداخلي لل Data Set :
في الحقيقة تعتبر Dataset مخزن يتم ملأه بعدد من الجداول التي يتم إستدعائها من مصدر البيانات مثل Access وSql Server و Oracl و MySql
وذلك بأستخدام طريقة fill للDataAdapter مثل XXXDataAdapter.Fill(DataSet) و ستنتج من ذلك ان البناء الداخلي لل DataSet
هو عبارة عن مخطط لعدد غير محدود لل Tables ويمكن تفصيل هذه الجدول الى حقول وصفوف كذلك قبول العلاقات بين الجداول
بما ان التكون الداخلي بهذا الاسلوب تستنتج انه بإستطاعتنا بناء قاعدة بيانات كاملة وبناء جداول و علاقات رياضية تربط بين الجداول واضافة صفوف واعمدة
كذلك نستطيع حفظ البيانات واستدعائها دون الحاجة الى Access وSql Server و Oracl و MySql .
في هذا الملحق سوف نتناول مثال تفصيلي لبناء قاعدة بيانات تتكون من جدولين والربط بينهما كذلك بناء الصفوف والاعمدة وذلك للتوضيح وفهم المطليوب .
--------------------------------------------------------------------------------------------------------------------------------
بناء الDataset من الصفر :
هنالك طريقتين لبناء الداتا سيت وهي اما سحب اداة الDataset من صندوق الادوات وقذفها على النموذج وهذه الطريقة بالنسبة لي غير محببة خصوصا للمبتدئين
بسبب انه يجب على المبرمج أولا معرفة البنية الاساسية لتكوين الداتا سيت وإلا واجه صعوبة في معرفة كيفية التحكم والتلاعب بهذه الاداة .
الطرقية الثانية هي بناء Dataset عن طريق كود ثم الكود وهي الطريقة التي سوف نعتمد عليها لبناء Dataset فل نبدء .
عند بناء الي داتا سيت جديد يتم التعرفة اولا عن متغير من نوع داتا سيت مثل :
Dim my_Dataset as DataSet()
بعد ذلك يتم إسناد هذا المتغير على انه من نوع داتا سيت جديد مثل :
my_Dataset = new Dataset()
بهذا السطرين نكون قد بنينا داتا سيت جديد عن طريق الكود , سوف تتضح الصورة اكثر إن شاء الله مع الامثلة المقبلة .
بناء الجداول داخل Dataset :
يتم بناء الجداول داخل الداتا سيت باستخدام كائن DataTable ثم يتم بعد ذلك اسناد او زرع كائن DataTable داخل الداتا سيت باستخدام الكود التالي :
my_Dataset.Tables.Add( Data Table Name )
لكي تكون الصورة أكثر وضوحاً فلنتناول هذا المثال التطبيقي لكيفية بناء جدول داخل الداتا سيت :
مثل تطبيقي رقم 1 : لنفرض انه لدينا جدول بسيط لمعلومات الموظفين (emp_info) يحتوى على ( رقم الموظف - الاسم الاول - الاسم الاخير ) ( id , FrirstName , LastName)
Dim my_dataset As DataSet
Dim my_emp_table As DataTable
'buid my dtat set
my_dataset = New DataSet()
'buid my emp info table
my_emp_table = New DataTable("emp_info")
'buid my table colums
my_emp_table.Columns.Add("id", GetType(Integer))
my_emp_table.Columns.Add("FirstName", GetType(String))
my_emp_table.Columns.Add("LastName", GetType(String))
'add my table to my dataset
my_dataset.Tables.Add(my_emp_table)في المثال رقم 1 قمنا ببناء Dataset جديد بعد ثم قمنا بالتعرفة عن كائن DataTable سميناه emp_info ثم قمنا بتكملة بناء الجدول وبناء الحقول
وتحديد كل حقل ونوعة , بعد ذلك قمنا بإدراج الجول الى الDataset باستخدام السطر الاخير من الكود , بذلك نكون قد انتهينا من بناء اول جدول ولكن مازال هذا الجدول
خالياً من اي قيمة ولإدراج القيم داخل الجدول الذي قمنا ببنائه هنالك ثلاث طرق , طرقتين باستخدام المصفومات وطريقة باستخدام كائن DataRow ,
الطريقة الاولى : ( مصفوفة )
'add new row by arry 1 Dim add_new_row_1(2) As String add_new_row_1(0) = 1 add_new_row_1(1) = "Ahmed" add_new_row_1(2) = "Al Saeed" my_emp_table.Rows.Add(add_new_row_1)
الطريقة الثانية : ( مصفوفة )
'add new row by arry 2
Dim add_new_row_2() As String = {2, "Ali", "Malik"}
my_emp_table.Rows.Add(add_new_row_2)الطرقية الثالثة : كائن (DataRow )
'add new row by DataRow Object
Dim add_new_row_3 As DataRow
add_new_row_3 = my_emp_table.NewRow
add_new_row_3.Item("id") = 3
add_new_row_3.Item("FirstName") = "Saleh"
add_new_row_3.Item("LastName") = "Majed"
my_emp_table.Rows.Add(add_new_row_3)لنعود الى مثالنا الاول ونضيف الطرق الثلاث الى المثال ونتاكد من عملها :
Dim my_dataset As DataSet
Dim my_emp_table As DataTable
'buid my dtat set
my_dataset = New DataSet()
'buid my emp info table
my_emp_table = New DataTable("emp_info")
'buid my table colums
my_emp_table.Columns.Add("id", GetType(Integer))
my_emp_table.Columns.Add("FirstName", GetType(String))
my_emp_table.Columns.Add("LastName", GetType(String))
'add my table to my dataset
my_dataset.Tables.Add(my_emp_table)
'add new row by arry 1
Dim add_new_row_1(2) As String
add_new_row_1(0) = 1
add_new_row_1(1) = "Ahmed"
add_new_row_1(2) = "Al Saeed"
my_emp_table.Rows.Add(add_new_row_1)
'add new row by arry 2
Dim add_new_row_2() As String = {2, "Ali", "Malik"}
my_emp_table.Rows.Add(add_new_row_2)
'add new row by DataRow Object
Dim add_new_row_3 As DataRow
add_new_row_3 = my_emp_table.NewRow
add_new_row_3.Item("id") = 3
add_new_row_3.Item("FirstName") = "Saleh"
add_new_row_3.Item("LastName") = "Majed"
my_emp_table.Rows.Add(add_new_row_3)
'show data by DataGridviwe
DG1.DataSource = my_emp_table
DG2.DataSource = my_dataset.Tables("emp_info")ولإظهار النتائج على الفورم قمت باضافة اداتين DataGridviwe وهي DG1 DG2 وبينت طريقتين مختلفتين لإستخدامها لعرض النتائج .
قم بتحميل هذا المثال all data set 1 اسفل الصفحة .
حفظ البيانات واستدعائها دون الحاجة الى Access وSql Server و Oracl و MySql :
كما قلنا سابقا بأنه يمكننا تخزين البيانات داخل ملف من نوع Xml ولكن لاتسالني عن حجم الملف وسعتة التخزينية لانني لم اجد جواباَ لهذا السؤال بعد
المهم لحفظ البيانات نقوم باضافة button ونسميه Save Data نكتب الكود التالي :
my_dataset.WriteXml("c:\my_dataset.ds")قم باضافة سطر جديد داخل DataGridviwe وضغط على زر Save Data سيقوم البرنامج بحفظ هذا السطر الجديد داخل الملف بنجاح ولا كن كيف
نظهر نتائج المخزنة في الملف قم باضافة button وسمه Load Data وكتب الكود التالي :
my_dataset.Clear()
my_dataset.ReadXml("c:\my_dataset.ds")قم بتحميل هذا المثال all data set 2 اسفل الصفحة
في التتمة القادمة سوف نشرح المزيد عن اخطبوط قواعد البيانات DataSet وانشاء اللله يكون الدرس واضحاَ للجميع وبالتوفيق .
تحياتي .


