في الدروس السابقة عرفنا ما هي قاعدة البيانات ، وما هو المقصود بلغة الاستعلام المركّبة sql ، وايضا انواع قواعد البيانات من حيث الاستخدام والمنتشرة في الاسواق ، وعرفنا نظام ادارة قواعد البيانات DBMS وخصائصه ومساوى ، وكذلك طرقنا لأنواع انظمة قواعد البيانات وما هي الانظمة المنتشرة حاليا …
سنتعرف اليوم على المفاهيم الاتية :
➖ لغة الاستعلام المركبة sql بشكل اوضح
➖ تقنية ADO. NET , ADO والفرق بينهم
➖ الوضع المتصل والمنفصل للاتصال بقواعد البيانات ، وخصائصهم ومساوئهم
➖ مكتبات تقنية ADO.NET للاتصال بقواعد البيانات بالتفصيل
عناصر تقنية ADO. NET بالتفصيل
#قصة جميله
كان لاختراع المصباح الكهربائي قصة مؤثرة في حياة أديسون، ففي أحد الأيام مرضت والدته مرض شديد، وقد استلزم الأمر إجراء عملية جراحية لها، إلا أن الطبيب لم يتمكن من إجراء العملية نظراً لعدم وجود الضوء الكافي ، واضطر للانتظار للصباح لكي يجري العملية لها، ومن هنا تولد الإصرار عند أديسون لكي يضئ الليل بضوء مبهر فأنكب على تجاربه ومحاولاته العديدة من اجل تنفيذ فكرته حتى انه خاض أكثر من 900 تجربة في إطار سعيه من اجل نجاح اختراعه، وقال عندما تكرر فشله في تجاربه
" هذا عظيم.. لقد أثبتنا أن هذه أيضا وسيلة فاشلة في الوصول للاختراع الذي نحلم به"، وعلى الرغم من تكرار الفشل للتجارب إلا انه لم ييأس وواصل عمله بمنتهى الهمة باذلاً المزيد من الجهد إلى أن كلل تعبه بالنجاح فتم اختراع المصباح الكهربائي في عام 1887م
تذكر
#يجب لكي تنجح أن تكون رغبتك في النجاح اكبر من خوفك من الفشل
لغة الاستعلام الهيكلية (SQL) بشكل اوضح حسب ما طلبوا مني اعضاء القناة وللتوضيح اكثر
لغة الاستعلام الهيكلية هي لغة قاعدة بيانات قياسية تُستخدم لإنشاء قاعدة البيانات العلائقية والحفاظ عليها واستردادها.
ايضا هي لغة البرمجة لقواعد البيانات العلائقية للانظمة التي ذكرناها سابقا مثل MySQL و Oracle و Sybase و SQL Server و Postgre وغيرها من انظمة ادارة قواعد البيانات الأخرى
قواعد البيانات غير العلائقية (تسمى NoSQL) مثل MongoDB و DynamoDB وما إلى ذلك لا تستخدم SQL
على الرغم من وجود معيار ISO لـ SQL ، إلا أن معظم التطبيقات تختلف قليلاً في بناء الجملة. لذلك قد نواجه استعلامات تعمل في SQL Server ولكنها لا تعمل في MySQL.
ظلت SQL خيارًا شائعًا باستمرار لمستخدمي قواعد البيانات على مر السنين ويرجع ذلك أساسًا إلى سهولة استخدامها والطريقة الفعالة للغاية التي تستعلم بها وتعالج وتجمع البيانات وتؤدي مجموعة واسعة من الوظائف الأخرى لتحويل مجموعات ضخمة من البيانات المنظمة إلى معلومات قابلة للاستخدام.
RDBMS
هو الأساس لـ SQL ولجميع أنظمة قواعد البيانات الحديثة مثل MS SQL Server و IBM DB2 Oracle و MySQL و Microsoft Access.
يمكن لـ SQL تنفيذ استعلامات على قاعدة بيانات
يمكن لـ SQL استرداد البيانات من قاعدة البيانات
يمكن لـ SQL إدراج السجلات في قاعدة البيانات
يمكن لـ SQL تحديث السجلات في قاعدة البيانات
يمكن لـ SQL حذف السجلات من قاعدة البيانات
يمكن لـ SQL إنشاء قواعد بيانات جديدة
يمكن لـ SQL إنشاء جداول جديدة في قاعدة بيانات
يمكن لـ SQL إنشاء إجراءات مخزنة في قاعدة بيانات
يمكن لـ SQL إنشاء طرق عرض في قاعدة بيانات
يمكن لـ SQL تعيين الأذونات على الجداول والإجراءات وطرق العرض
ملاحظة بخصوص لغة الاستعلام sql
تم دمج sql في انظمة ادارة قواعد البيانات مثلا
MS SQL Server
IBM DB2
Oracle و
MySQL
Microsoft Acces
وغيرها من انظمة ادارة قواعد البيانات لذلك عند تعلم لغة الاستعلام sql فانت تكون تعلمت اغلب انظمة قواعد البيانات بدورة واحده باعتبار جميع انظمة dbms هي نفس برمجة sql وانه شرحت لغة الاستعلام في القناة يمكنكم الاطلاع عليها
تقنية ADO.NET ؟
ActiveX Data Object
عبارة عن تقنية للوصول إلى قاعدة البيانات أنشأتها Microsoft كجزء من إطار عمل NET الذي يمكنه الوصول إلى أي نوع من مصادر البيانات وانها مجموعة من الفئات الموجهة للكائنات التي توفر مجموعة غنية من مكونات البيانات لإنشاء تطبيقات قواعد بيانات عالية الأداء وموثوق بها وقابلة للتطوير لتطبيقات الخادم والعميل بالإضافة إلى البيئات الموزعة عبر الإنترنت والشبكات الداخليه في نموذج ADO.NET
يستخدم ADO .NET استعلامات SQL والإجراءات المخزنة لقراءة و تحديث وحذف البيانات من مصدر البيانات.
الاختلافات الجوهرية بين - - ADO و ADO.NET :
تقنية ADO : هي التقنية التي كانت تستخدم قبل ADO.NET
1- مصممة للعمل في بيئة متصلة باستمرار مع قاعدة البيانات .
2- يستخدم الكائن Record Set للاحتفاظ بمجموعة بيانات واحدة .
3- تحتوي على أنواع من المؤشرات Cursors المستخدمة لأغراض مختلفة ولكل مؤشر إمكانياته الخاصة.
4- تخزن البيانات في هيئتها الثنائية مما يصعب أرسالها عبر جدران الحماية . كما أنها غير مفيدة للأنظمة التي لا تدعم ADO .
5- تستهلك قدرا من موارد النظام بسبب اتصالها الدائم بقاعدة البيانات أثناء المعالجة
تقنية ADO.NET : هي تقنية مطورة عن ADO
1-مصممة من الأساس للعمل في بيئة غير متصلة ويمكنها العمل في البيئتين المتصلة والغير متصلة.
2 - يستخدم الكائن DataSet للاحتفاظ بعدة مجموعات من البيانات.
3- لا تستخدم المؤشرات لأنها تعمل في بيئة غير متصلة
4- تخزن البيانات في هيئة XML العالمية . وهذه الهيئة مصممة لكي ترسل عبر جدران الحماية وعبر الشبكات دون مشاكل كما يمكن لأي تطبيق قراءة البيانات بهيئة XML بسهولة .
5- تعمل كنظام منفصل عن قاعدة البيانات فهي لا تتصل بها إلا عند الضرورة.
والاختلافان الأخيران رقم 5 - 4 هما جوهرة الاختلاف وأهمها .
طرق الاتصال بقواعد البيانات SQL server
هناك طريقتين للاتصال بقواعد البيانات وكل طريقه لها خصائص ومميزات وعيوب تختلف عن الاخر
الوضع المتصل (Connected Mode) او البيئه المتصلة
الوضع المتصل يقصد به اتصال مصدر قاعدة البيانات مع مشروع او تطبيق مباشره واجراء عمليات الحذف والتعديل والحفط والبحث والاستعلام وأي خلل في مصدر البيانات أو ايقاف مؤقت سيؤدي الى خلل في التطبيق وسمي بالوضع المتصل لان التطبيق او المشروع الذي نبرمجة يبقى متصلا على طول مع قاعدة البيانات .
و تتلخص فكرته في ان نقوم بإجراء اتصال مع قاعدة البيانات من خلال الكأئن Connection ، وبعد قبولة نقوم بفتح الاتصال ثم نقوم بتنفيذ مجموعة من الأوامر التي نحتاجها من خلال الكائنين Command و DataReader (مثل قراءة البيانات من أجل عرضها للمستخدم (DataReader) ،
أو تحديث البيانات من إضافة و تعديل و حذف ، أو إلغاء الاتصال.
ويعتبر إغلاق الاتصال ضرورياً لان معظم مصادر البيانات تدعم عدداً محدوداً من الاتصالات المفتوحه. وهذا يعني اننا يجب ان نحافظ على الاتصال حتي ننتهي من الهدف الذي تم من اجلة الاتصال.
هذا النوع من الاتصال مناسب في حالة بناء التطبيقات المفردة اي عندما يكون للنظام مستخدم واحد وتوجد واجهة المستخدم ومخزن قاعدة البيانات على نفس الجهاز.
ولا يمكن استخدامه في حالة التطبيقات التي يحتاجها الكثير المستخدمين.
ويرجع السبب في ذلك الي ان مثل هذا النوع من الاتصال يستهلك جزءاً مهم من موارد النظام و يترتب عليه تدني أداء هذه التطبيقات.
ولأن معظم مصادر البيانات تدعم عدداً محدوداً من الاتصالات المفتوحة ويعد ذلك من اكبر عيوب هذا النوع
بالاضافة الي انه يتطلب كتابة الكثير من الاكواد البرمجية وذلك يعد عائق كبير اما عند صيانه او تطوير الكود من وقت لأخر.
ولعمل اتصال من هذا النوع نحتاج الي ثلاث كائنات اساسية نستخدمها على النحو التالي:
• Connection
• Command
• DataReader
الوضع المنفصل(Disconnected ) او البيئه المنفصلة
الوضع المنفصل هو عكس الوضع المتصل
اي التطبيق يبقى منفصل عن قاعدة البيانات عندما نجري العمليات الاضافة وحذف وتعديل وحفظ وبحث وسوف يتم تحميل قاعدة بيانات على ذاكرة ومن بعد ما ننتهي من التغيرات في البيانات يرجع الوضع المنفصل…
ويعد الوضع المنفصل هو الامثل للتعامل مع قواعد البيانات ، وذلك نظرا للامكانيات والكائنات المتنوعة التي تمكن المستخدم من اخذ نسخة من الجداول المخزنه في قاعدة البيانات و قراءة البيانات المخزنة فيها وتعديلها و عرضها و وتصفيتها و معالجتها او انشاء علاقات فيما بينها ، وذلك لفترات طويلة دون ان تستهلك الكثير من موارد النظام.
ويترتب على ذلك عمل تطبيقات بكفاءة عالية. ولان معظم مصادر البيانات تدعم عدداً محدوداً من الاتصالات المفتوحة فإن الوضع المنفصل استطاع ان يتجاوز هذة المشكلة.
وتتخلص فكرته في ان نقوم بإجراء اتصال بقاعدة البيانات وذلك بواسطة كائن Connection كما ذكرت في السابق ، وبعد قبول الاتصال نقوم بأخذ نسخة من البيانات المخزنة في مصدر البيانات (Data Source) السيرفر بالنسبة لقواعد البيانات SQl Server او Oracle وملف قاعدة البيانات بالنسبة لــ Microsoft Access. ثم نقوم بتخزينها في الذاكرة وذلك من خلال كائن يكون بمثابة مستودع لليبانات يسمى DataSet.
ولكي تتم هذه العملية يحتاج هذا الكائن الى كائن آخر يسمى DataAdapter او ما يعرف ب موفق البيانات يكون بمثابة وسيط بين مجموعة البيانات الــ DataSet ومصادر البيانات الــ Data Source.
حيث يقوم الــ DataAdapter بعملية فتح الاتصال بقاعدة البيانات و استراد وتصدير البيانات من والي مصدرها الاساسي ، وبعد تخزين البيانات في الــ DataSet فإنها تصبح منفصلة عن مصدر البيانات لان الكائن DataAdapter يقوم بشكل تلقائي ايضا بقطع الاتصال بقاعدة البيانات.
وهذا الانفصال و الاستقلال هو السبب في تسمية هذة الطريقة بالاتصال المنفصل او الوضع المنفصل.
وهو السر في تفوقه على الوضع المتصل لانه يتغلب على جمية عيوبه ومشاكلة. اما الكأئنات الاساسية المستخدمة في الوضع المنفصل هي:
• Connection
• DataSet
• DataAdapter
مميزات وعيوب كل من الوضع المتصل والوضع المنفصل
1⃣- الوضع المتصل
طبعا عرفنا وكلنه هو الذي يكون فيه المستخدم متصلا باستمرار عبر مصدر البيانات DataSourceبقاعدة البيانات طوال فترة التعامل مع البيانات
من فوائده :
➖ التحكم بالعمل الجماعي حين يقوم المستخدم بتحديث بيانات فإنه يتم اغلاق عملية التحديث لهذه البيانات حتى
ينتهي من التحديث ويتم اغلاق التحديث للمستخدمين الاخرين لكي لا يحدث تعارض في تحديث البيانات.
ويوجد لها مزايا أخرى
من عيوبه :
➖ في النظم الموزعة تحتاج لوجود شبكة اتصال دائمة نظرا لحاجتها الى قناة اتصال مفتوحة فوجود شبكة
اتصال دائم بمصدر البيانات هو ما لا يتوفر في اغلب الأحيان.
➖ تسبب ضعف في التوسع والامداد حيث كل مستخدم له اتصال مع مصدر البيانات لا يمكن لاي مستخدم
اخر أن يشترك معه مما يعني زيادة عدد المستفيدين ولذلك يحتاج الى زيادة عدد الاتصال وهذا مايستدعي حلول لهذه الحالات مثل مواقع الانترنت التي يدخل اليها الاف من المستفيدين في وقت واحد أو متقارب
2⃣ - الوضع المنفصل
ايضا عرفنا هو مجموعة بيانات يتم نسخها من مصدر البيانات DataSource
إلى داخل حاوية البيانات
DataSet
وتعديلها بعيدا عن قاعدة البيانات ومن ثم ارجاع التحديثات التي تمت عليها الى مصدر البيانات ثم اغلاق الاتصال وفي هذه البيئة لاتستخدم قناة اتصال مفتوحة بإستمرار مع مصدر البيانات.
من فوائده :
➖ إمكانية اشتراك اكثر من مستخدم بنفس الاتصال لان المستخدم يقوم بالاتصال تم نسخ البيانات ثم قطع
الاتصال وتكون فترة وحدود الاتصال مع مصدر البيانات فترة ضئيلة لذا يمكن أن يستفيد مستخدم اخر من نفس الاتصال بعد أن ينتهي منه المستخدم الأول.
➖ الأداة العالي قابل للتوسع
➖ تخفيف الضغط المتزايد على الجهاز الرئيسي .Server
➖ يسمح للأجهزة الفرعية العمل باستقلالية بكل كفاءتها بدل انتظار استجابات الرئيسي.
➖ فترات الفصل عن الجهاز الرئيسي توفر نسبة آمان أكثر له.
➖ السماح لعدد اكبر من الأجهزة الفرعية للعمل في الشبكة ما يوفر مرونة في توزيع وإدارة العمل
➖ التكلفة القليلة والسرعة العالية
من عيوبه :
➖ عدم حداثة البيانات أي أن البيانات الموجودة عند المستفيد ليست البيانات الحقيقية ،
مثلا لو فرض ان متصفح يريد منتج من الانترنت فإن البيانات التي توجد عنده غير البيانات الحقيقية ، بمعنى أن عدد الكتب مثلا الموجوده امامه غير العدد الحقيقي لانه ربما قام عدة متصفحين بشراء الكتاب اثناء تصفحه له.
➖ إمكانية حدوث تضارب عند تحديث البيانات بين مستخدمين في نفس الوقت ونادرا ما يحدث ذلك
مكتبات تقنية دوت نت ADO.NET او ما يسمى بفضاء الاسماء للاتصال مع انظمة ادارة قواعد البيانات
مكتبة System.Data.OleDb
تتعامل مع قاعدة بيانات من نوع اكسس MS Accessومن ضمن عناصرها الاساسية
OleDbDataAdapter
OleDbCommand
OleDbConnection
مكتبة System.Data.OracleClient
تتعامل مع نظام قاعدة البيانات أوراكل Oracle ومن ضمن عناصرها الاساسية
OrcaleDataAdapter
OrcaleCommand
OrcaleConnection
مكتبة System.Data.Odbc
تتعامل مع نوع ODBC ومن ضمن عناصرها الاساسية
OdbcDataAdapter
OdbcCommand
OdbcConnection
مكتبة System.Data.SqlClient
تتعامل مع نظام قاعدة البيانات SQL Server ومن عناصرها الاساسية
SqlCommand
SqlConnection
SqlDataAdapter
طبعا هذه مكتبات ان شاء الله نتعامل وياها ونتعرف عليها اكثر عند برمجة انظمة ادارة قواعد البيانات وربطها مع visual studio