Eyad
05-01-2008, 06:16 AM
السلام عليكم :
أرجو من الله أن أكون قد وفقت في إعطاء المحاضرة التي كانت بعنوان Ado.net
مع بعض الملاحظات عليها لكن ولله الحمد جرت على خير.
تتلخص أهدفنا في التعامل مع قواعد البيانات في النقاط التالية:
1- الاتصال بمصدر قاعدة البيانات.
2- قراءة البيانات التي بها وعرضها بطرق شتى من خلال الأدوات المتوفرة في بيئةMicrosoft.NET.
3- معالجة البيانات وتحديثها من خلال تعديل قيم هذه البيانات أو إضافة بيانات جديدة أو حذف بيانات غير مرغوب فيها.
4- حفظ البيانات المحدثة.
5- الإبحار في البيانات من خلال الانتقال للسجل التالي أو ألعودة للسجل السابق أو الانتقال للسجل الأول أو الانتقال للسجل الأخير.
6- البحث عن البيانات بسهولة ويسر من خلال وضع فلاتر للترشيح.
7- ربط البيانات ذات العلاقة في أكثر من جدول وعرضها ومعالجتها.
8- طباعة التقارير الملخصة للبيانات.
الاتصال بقواعد البيانات:
للوصول إلى البيانات المخزنة في قاعدة البيانات والقراءة منها أو الكتابة فيها يجب أن نكوّن اتصال ناجح معها،
وذلك يتم من خلال كائن الاتصال المسمى Connection، ولتجهيز هذا الكائن نحتاج إلى أعطائه معلومات
عن ملف قاعدة البيانات الذي نريد أن نتصل به (من أهمها على سبيل المثال مزود البيانات وخادم البيانات
واسم ومكان قاعدة البيانات و كلمة المرور مع كلمة السر إن وجدت)، وهذه المعلومات تكوّن لنا بما يسمى سلسلة الاتصال
(Connection String) وهي عبارة عن أحد خصائص كائن الاتصال.
string ConnectionString = "Data Source=mabrokeh-3b15a6;Initial Catalog=cephalometric_Finaly;Integrated Security=True";
Connection = new System.Data.SqlClient.SqlConnection(ConnectionStri ng);
بعد التعرف على سلسلة الاتصال يجب أن نتعرف على نوعيّ طريقة الاتصال بقاعدة البيانات.
نوعيّ طريقة الاتصال بقواعد البيانات:
من الجدير بالذكر أننا لو أردنا أن نتصل على قاعدة البيانات بواسطة ADO.NET يجب أن نختار طريقة الاتصال المناسبة لاحتياجاتنا، فلدينا طرقتين للاتصال وهما الاتصال المتصل (Connection Oriented) و الاتصال المنفصل (Connectionless Oriented). ولكل منهما امتيازاته وعيوبه و إستراتجياته الخاصة به في العمل، غير أن الأخير يعتبر الأمثل في التعامل مع قواعد البيانات، وهنا بالتحديد يضيع أغلب من يرغبون تعلم برمجة قواعد البيانات من خلال ADO.NET.
والسبب في اعتقادي هو ضعف فهم الآلية التي يعمل بها كل منهما من ناحية، والخلط بينهما من ناحية أخرى. ولكي نزيل هذه المشكلة سوف نتحدث عن كل منهما بشكل مستقل.
وقبل ذلك يجب أن نوضح أمر مهم وهو: أنه عند بدأ مشروع جديد للاتصال بقاعدة البيانات يجب قبل كل شيء أن نستدعي فضاء الأسماء المناسب لمزود البيانات الذي نتعامل معه، والذي تندرج تحته كائناته الخاصة به للاتصال بقاعدة البيانات و ومعالجتها، ومن مميزات استدعاء فضاء الأسماء أنه يغنينا عن كتابة مسار الكائنات التي سوف نستخدمها، فقط نكتب اسم الكائن.
وعند التعامل مع قواعد بيانات SQL Server نستدعي فضاء الأسماء System.Data.SqlClient وذلك بكتابة الكود التالي في أعلى صفحة الكود:
using System.Data. SqlClient
وتندرج تحته مجموعة من الكائنات ولكن ما يهمنا منها كمبتدئين ما يلي:
1. SqlCommand.
2. SqlConnection.
3. SqlDataAdapter.
4. SqlDataReader.
5. SqlParameter.
6. SqlCommandBuilder.
7. SqlTransaction.
8. SqlException.
بعد تجهيز الخصائص السابقة لكائن الأمر ونريد تنفذ الأعمال المطلوبة منه عند حصوله على تيار من البيانات، لدينا ثلاثة طرق يتم بها العمل:
الطريقة الأولى (ExecuteReader) وهي أحد خصائص كائن الأمر وتقوم بتنفيذ استعلام بنيوي يرجع لنا مجموعة من الصفوف الموجودة في قاعدة البيانات وهو ما يتطلب استرجاع هذه النتيجة بواسطة الكائن sqlDataReader والذي سون نتحدث عنه بعد قليل.
الطريقة الثانية (ExecuteNonQuery) وهي أحد خصائص كائن الأمر وتقوم بتنفيذ استعلام بنيوي يقوم بتحديث قاعدة البيانات (من إضافة، تعديل، و حذف) أو تكوين قاعدة بيانات والنتيجة التي ترجع هي عدد الصفوف المتأثرة بالأمر.
الطريقة الثالثة (ExecuteScalar) وهي أحد خصائص كائن الأمر وتقوم بتنفيذ استعلام بنيوي يرجع لنا قيمة واحده فقط من قاعدة البيانات.
هذه مقدمة فقط وإليكم دورة مطولة لتعلم Ado وهي سهلة ومبسطة وعليكم أن تأخذوا ما يفيدكم منها
علما أنها ليست بلغة C#.net ولكن بلغة VB.net وهي قريبة جدا منها .
وإليكم هذا المثال على الربط مع DB.
هنا لدينا جدول يحوي معلومات عن مرضى وإخر يحوي معلومات عن الصور الخاصة بهؤلاء المرضى
نريد إظهار محتويات الجدول الأول في DataGrideview1 وما يرتبط بهذا المريض من صور في DataGrideview1
وما يرافقها من أوامر إضافة حفظ حذف للبيانات.
ومن يمتلك أي سؤال أرجو طرحه في هذا الموضوع وسيتم الإجابة بإذن الله.
أرجو من الله أن أكون قد وفقت في إعطاء المحاضرة التي كانت بعنوان Ado.net
مع بعض الملاحظات عليها لكن ولله الحمد جرت على خير.
تتلخص أهدفنا في التعامل مع قواعد البيانات في النقاط التالية:
1- الاتصال بمصدر قاعدة البيانات.
2- قراءة البيانات التي بها وعرضها بطرق شتى من خلال الأدوات المتوفرة في بيئةMicrosoft.NET.
3- معالجة البيانات وتحديثها من خلال تعديل قيم هذه البيانات أو إضافة بيانات جديدة أو حذف بيانات غير مرغوب فيها.
4- حفظ البيانات المحدثة.
5- الإبحار في البيانات من خلال الانتقال للسجل التالي أو ألعودة للسجل السابق أو الانتقال للسجل الأول أو الانتقال للسجل الأخير.
6- البحث عن البيانات بسهولة ويسر من خلال وضع فلاتر للترشيح.
7- ربط البيانات ذات العلاقة في أكثر من جدول وعرضها ومعالجتها.
8- طباعة التقارير الملخصة للبيانات.
الاتصال بقواعد البيانات:
للوصول إلى البيانات المخزنة في قاعدة البيانات والقراءة منها أو الكتابة فيها يجب أن نكوّن اتصال ناجح معها،
وذلك يتم من خلال كائن الاتصال المسمى Connection، ولتجهيز هذا الكائن نحتاج إلى أعطائه معلومات
عن ملف قاعدة البيانات الذي نريد أن نتصل به (من أهمها على سبيل المثال مزود البيانات وخادم البيانات
واسم ومكان قاعدة البيانات و كلمة المرور مع كلمة السر إن وجدت)، وهذه المعلومات تكوّن لنا بما يسمى سلسلة الاتصال
(Connection String) وهي عبارة عن أحد خصائص كائن الاتصال.
string ConnectionString = "Data Source=mabrokeh-3b15a6;Initial Catalog=cephalometric_Finaly;Integrated Security=True";
Connection = new System.Data.SqlClient.SqlConnection(ConnectionStri ng);
بعد التعرف على سلسلة الاتصال يجب أن نتعرف على نوعيّ طريقة الاتصال بقاعدة البيانات.
نوعيّ طريقة الاتصال بقواعد البيانات:
من الجدير بالذكر أننا لو أردنا أن نتصل على قاعدة البيانات بواسطة ADO.NET يجب أن نختار طريقة الاتصال المناسبة لاحتياجاتنا، فلدينا طرقتين للاتصال وهما الاتصال المتصل (Connection Oriented) و الاتصال المنفصل (Connectionless Oriented). ولكل منهما امتيازاته وعيوبه و إستراتجياته الخاصة به في العمل، غير أن الأخير يعتبر الأمثل في التعامل مع قواعد البيانات، وهنا بالتحديد يضيع أغلب من يرغبون تعلم برمجة قواعد البيانات من خلال ADO.NET.
والسبب في اعتقادي هو ضعف فهم الآلية التي يعمل بها كل منهما من ناحية، والخلط بينهما من ناحية أخرى. ولكي نزيل هذه المشكلة سوف نتحدث عن كل منهما بشكل مستقل.
وقبل ذلك يجب أن نوضح أمر مهم وهو: أنه عند بدأ مشروع جديد للاتصال بقاعدة البيانات يجب قبل كل شيء أن نستدعي فضاء الأسماء المناسب لمزود البيانات الذي نتعامل معه، والذي تندرج تحته كائناته الخاصة به للاتصال بقاعدة البيانات و ومعالجتها، ومن مميزات استدعاء فضاء الأسماء أنه يغنينا عن كتابة مسار الكائنات التي سوف نستخدمها، فقط نكتب اسم الكائن.
وعند التعامل مع قواعد بيانات SQL Server نستدعي فضاء الأسماء System.Data.SqlClient وذلك بكتابة الكود التالي في أعلى صفحة الكود:
using System.Data. SqlClient
وتندرج تحته مجموعة من الكائنات ولكن ما يهمنا منها كمبتدئين ما يلي:
1. SqlCommand.
2. SqlConnection.
3. SqlDataAdapter.
4. SqlDataReader.
5. SqlParameter.
6. SqlCommandBuilder.
7. SqlTransaction.
8. SqlException.
بعد تجهيز الخصائص السابقة لكائن الأمر ونريد تنفذ الأعمال المطلوبة منه عند حصوله على تيار من البيانات، لدينا ثلاثة طرق يتم بها العمل:
الطريقة الأولى (ExecuteReader) وهي أحد خصائص كائن الأمر وتقوم بتنفيذ استعلام بنيوي يرجع لنا مجموعة من الصفوف الموجودة في قاعدة البيانات وهو ما يتطلب استرجاع هذه النتيجة بواسطة الكائن sqlDataReader والذي سون نتحدث عنه بعد قليل.
الطريقة الثانية (ExecuteNonQuery) وهي أحد خصائص كائن الأمر وتقوم بتنفيذ استعلام بنيوي يقوم بتحديث قاعدة البيانات (من إضافة، تعديل، و حذف) أو تكوين قاعدة بيانات والنتيجة التي ترجع هي عدد الصفوف المتأثرة بالأمر.
الطريقة الثالثة (ExecuteScalar) وهي أحد خصائص كائن الأمر وتقوم بتنفيذ استعلام بنيوي يرجع لنا قيمة واحده فقط من قاعدة البيانات.
هذه مقدمة فقط وإليكم دورة مطولة لتعلم Ado وهي سهلة ومبسطة وعليكم أن تأخذوا ما يفيدكم منها
علما أنها ليست بلغة C#.net ولكن بلغة VB.net وهي قريبة جدا منها .
وإليكم هذا المثال على الربط مع DB.
هنا لدينا جدول يحوي معلومات عن مرضى وإخر يحوي معلومات عن الصور الخاصة بهؤلاء المرضى
نريد إظهار محتويات الجدول الأول في DataGrideview1 وما يرتبط بهذا المريض من صور في DataGrideview1
وما يرافقها من أوامر إضافة حفظ حذف للبيانات.
ومن يمتلك أي سؤال أرجو طرحه في هذا الموضوع وسيتم الإجابة بإذن الله.