الربط مع قواعد البيانات في الدوت نت
Posted by tammamkoujan on March 17, 2007
الربط مع قواعد البيانات في الدوت نت
Data Access with .NET
مستوى الدرس : مبتدأ
لغة البرمجة : C# , VB.NET
مضمون الدرس : اذا كنت مبتدأاً يعلمك هذا الدرس واحدة من طرق الربط مع انواع مختلفة من قواعد البيانات
عندما تكتب تطبيق قواعد بيانات فإنك أول ما ستحتاجه هو تحديد عبارة الاتصال بالقاعدة , و تختلف هذه العبارة باختلاف
نوع قاعدة البيانات التي تتعامل معها و نوع الاتصال الذي تقوم به مع القاعدة .
من خلال هذا الدرس سأعلمك واحدة من اسهل الطرق للاتصال بقاعدة البيانات و التي توفر لك طريقة سهلة و مريحة للإتصال
بمختلف أنواع قواعد البيانات . طبعا هناك طريقة أخرى سهلة جداً من خلال إضافة مكونات قواعد البيانات من لوح الادوات لكن بصراحة أنا شخصيا لا احب هذه الطريقة لأن الاتصال و التعامل مع البيانات من خلال الشيفرة يجعلني احس بسيطر و قدرة اكبر على التحكم بالبيانات.
- Microsoft SQL Server 2000
- Microsoft Access 2003
إذا كنت تبرمج برنامجا يعتمد على قواعد البيانات و إذا كنت كسولا مثلي فلربما ستسأل نفسك ألا يوجد طريقة بسيطة و سهلة تريحني من كتابة عبارة الإتصال التي ارتبط بها مع قاعدة البيانات , تهانينا ستجد هنا الطريقة السحرية التي طالما حلمت بها .
في دوت نت يمكنك الارتباط بقواعد البيانات من خلال فضائي الاسماء :
- System.Data.SqlClient : هذا الفضاء مخصص للتعامل مع قواعد بيانات Microsoft SQL Server .
- System.Data.OleDb : هذا الفضاء مخصص للتعامل مع بقية أنواع قواعد البيانات التي تدعم OLE مثل
Microsoft Access.
ملاحظة : بما ان SQL Server تدعم OLE فيمكنك التعمل معها من خلال الفضاء System.Data.OleDb لكن
الفضاء System.Data.SqlClient هو الافضل و الاسرع في التعامل مع SQL Server .
كبداية سريعة إنطلق مباشرة إلى سطح مكتبك (لا أقصد سطح مكتبك في الغرفة بل الذي في حاسبك) و انقر بزر الفأرة الأيمن في أي مكان فارغ فيه , ثم انقر على الخيار “New” ثم اختر مستند نصي “Text Document”
كما في الصورة التالية :
قم بتغيير اسم الملف إلى Connection.udl (عند تغيير اسم الملف تأكد من أنك غيرت لاحقته فعلا و إلا فإنه سيبقى ملفا نصيا )
عند تغيير اسم الملف ستظهر لك الرسالة التالية :
انقر Yes , ستتحول أيقونة الملف إلى الشكل التالي :
سنبدأ أولا بالاتصال مع قاعدة البيانات SQL Server 2000 , انقر على الملف , سفتح لك نافذة قد تكون مألوفة لك اذا كنت قد كتبت تطبيقات قواعد بيانات من قبل .
اذهب إلى الصفحة Provider:
قم باختيار Microsoft OLE DB Provider for SQL Server (يبدو انك قد لاحظت كلمة OLE في العبارة رغم
اننا قلنا بأنه لن نستخدم OLE في الاتصال بـ SQL Server ثق بي فقط و أكمل)
انقر على الزر Next , ستنتقل عندها إلى الصفحة Connection
قم بتحديد اسم السرفر الذي تتواجد عليه SQL Server ( في مثالنا هذا هو TAMMAM_PC )
ثم قم بتحديد طريقة الدخول للقاعدة (في المثال قمت باستخدام أمان ويندوز) , في الجزء الثالث و الأخير أنقر على
القائمة المنسدلة و قم بتحديد قاعدة البيانات التي تريد الاتصال بها (في هذا المثال استخدم قاعدة Northwindالمرفقة مع SQL Server كمثال) , الان كل شيء جاهز تقريبا انقر على الزر Test Connection اذا كان كل شيء صحيحا ستظهر لك الرسالة التالية :
انقر زر OK لتغلق الرسالة ثم زر OK لتغلق النافذة .
اذهب الان إلى Visual Studio .NET قم بإنشاء مشروع جديد (رغم أنني سأضع الشيفرة بالـ C# و الـ VB.NET إلا
ان الصور ستكون للمشروع المكتوب بالـ C# ) و قم بتسميته CreateConnection كما في الصورة :
قم بإضافة زر إلى النموذج و قم بتغيير خاصية الـ Text له إلى : SQL Server Test Connection كما في الشكل :
انقر بزر الفأرة الأيمن على النموذج و اختر View Code , قم بإضافة فضاء الاسماء System.Data.SqlClient
إلى البرنامج في الجزء العلوي من الشيفرة و ذلك لدعم SQL Server :
C# :
VB.NET :
عد إلى واجهة التصميم و انقر على الزر ثم قم بكتابة ما يلي :
C# :
{
SqlConnection objConn = new SqlConnection();
objConn.Open();
objConn.ConnectionString = “”;
MessageBox.Show(”Hello” + (char)13 + ” I am Connected to SQL Server 2000″);
}
catch (Exception ex)
{
MessageBox.Show(”Can not Connect to the database “+ex.Message);
}
VB.NET :
Dim objConn As New SqlConnection()
objConn.ConnectionString = “Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=TAMMAM_PC”
objConn.Open()
MessageBox.Show(”Hello” + vbCrLf + “I am Connected to SQL Server 2000″)
Catch ex As Exception
MessageBox.Show(”Can not Connect to the database ” + ex.Message)
End Try
الان نعود إلى ملف Connection.udl الذي أنشأناه في بداية هذا الدرس , قم بالنقر باليمين على الملف ثم اختر
Open With ثم قم بإختيار Notepad :
بدءاً من عبارة Integrated Security قم بنسخ السطر إلى نهايته (لاحظ اننا تجاهلنا العبارة Provider=SQLOLEDB.1; في
بداية السطر لأننا نتصل من خلال الفضاء System.Data.SqlClient و ليس من خلال
System.Data.OleDb رغم انه يمكنك تجاهلها بالنسبة لـ OLE أيضا لانه القيمة الافتراضية لكن من الفضل وضعها عند استخدامه)
و من ثم الصقه في الشيفرة عند objConn.ConnectionString في مثالنا سيكون بالشكل التالي :
C# :
Info=False;Initial Catalog=Northwind;Data Source=TAMMAM_PC”;
VB.NET :
قم بضغط F5 سيتم تنفيذ البرنامج انقر على الزر و اذا مان كل شيء صحيحا ستظهر لك الرسالة التالية :
الان انهينا ما يتعلق بالاتصال بـ SQL Server و ننتقل إلى الاتصال من خلال OLE
قم بإنشاء ملف Microsoft Access جديد , ثم قم بالنقر على الملف Connection.udl الذي أنشأناه اذهب إلى الصفحة
Provider و قم باختيار Microsoft Jet 4.0 OLE DB Provider انقر على الزر Next سيتم نقلك إلى الصفحة Connection قم بتحديد مسار القاعدة ثم انقر الزر Test Connection انقر OK ثم OK .
قم بإضافة زر جديد إلى البرنامج اكتب في خاصية Text للزر : OLE DB Test Connection
قم بإضافة فضاء الاسماء System.Data.OleDb إلى البرنامج في الجزء العلوي من الشيفرة و ذلك لدعم OLE :
C# :
VB.NET :
عد إلى واجهة التصميم و انقر على الزر الثاني ثم قم بكتابة ما يلي :
C# :
{
OleDbConnection objConn = new OleDbConnection();
objConn.ConnectionString = “”;
objConn.Open();
MessageBox.Show(”Hello” + (char)13 + “I am Connected to OLE DB”);
}
catch (Exception ex)
{
MessageBox.Show(”Can not Connect to the database ” + ex.Message);
}
VB.NET :
Dim objConn As New OleDbConnection()
objConn.ConnectionString = “”
objConn.Open()
MessageBox.Show(”Hello” + vbCrLf + “I am Connected to OLE DB”)
Catch ex As Exception
MessageBox.Show(”Can not Connect to the database ” + ex.Message)
End Try
الان نعود إلى ملف Connection.udl الذي عدلنا الاتصال فيه , قم بالنقر باليمين على الملف ثم اختر
Open With ثم قم بإختيار Notepad :
بدءاً من كلمة Provider قم بنسخ السطر إلى نهايته , و من ثم الصقه في الشيفرة عند objConn.ConnectionString في مثالنا سيكون بالشكل التالي :
C# :
VB.NET :
قم بتنفيذ البرنامج ثم اضغط الزر الثاني ستظهر لك الرسالة :
هكذا تكون تعلكت كيف تنشأ عبارة الاتصال مق قواعد بيانات SQL Server و OLE و بالتالي اصبح من السهل عليك ان تتوسع و تربط مع اي قاعدة بيانات تريدها
لتحميل شيفرة البرنامج :
CreateConnection.zip
اتمنى ان تكون قد استفدت من الدرس , اذا كان عندك اية ملاحظات او اكتشفت اي خطأ أو كنت تملك معلومات اضافية قد تساعدني
اتمنى ان تراسلني و تخبرني بما عندك .
للمزيد من الدروس يمكنك زيارة مدونتي الإلكترونية http://tammamkoujan.wordpress.com/
اذا كنت ترغب بمراسلتي Tammam84@Yahoo.com
ملاحظاتك و استفساراتك مرحب بها على الدوام .
ُEmail : TammamKoujan@Gmail.com
يجوز نشر هذه المقالة أو أجزاء منها بشرط المحافظة على اسم الكاتب و ذكر المصدر

ma-3lina said
شرح ممتاز .. جزاك الله خيرا
أحييك بشدة على مدونتك الأكثر من رائعة .. ومواضيعك المتنوعة المفيدة
ما شاء الله
أحب اسأل عن رأيك حول موضوع الربط مع قواعد المدونات .. أيهما تفضل استخدام الكود السابق داخل بلوكات البرنامج أم استخدام الويزارد الملحق بالدوت نت …
tammamkoujan said
الله يسلمك
بالنسبة للربط فأنا بصراحة لا استخدم الويزارد
مطلقا و لا اضع على النموذج اي اداة مثل DataSet او غيرها
من الادوات التي تنجز الامور بسرعة
بل اقوم بالربط و التعامل من خلال القاعدة ربما لأنني
اكره الويزارد الذي يخفي كل شيء و يعطيك النتيجة مباشرة
و ربما لأنني احس انني عندما اقوم بذلك من خلال الكود احس بسيطرة و تحكم اكبر
MOHAMED said
جزاك الله خير ويا ريت يكون في سلسلة دروس للتعامل مع قواعد البيانات لاني مبتديء ومشغوف للتعلم
mahmoud said
جزاك الله خير بس انا برده بروح اخد النص من الملف هل في طريقة ممكن من خلالها اخذ النص من خلال الأبلكيشن مباشره
tammamkoujan said
يمكنك ان تأخذ النص من خلال التطبيق مباشرة
فعند تشغيل التطبيق يمكنك ان تظهر للمستخدم نافذة
تظهر السرفرات المتاحة و التي منصب عليها محرك قواعد البيانات و بعد ان يحدد المستخدم السرفر تظهر له قائمة بقواعد البيانات المتاحة على هذا السرفر و من ثم يختار قاعدة البيانات التي سيرتبط معها التطبيق
و عند الانتهاء من ذلك ينشأ البرنامج عبارة اتصال و يحفظها في مكان ما كالريجستري Registry
للقيام بذلك انت بحاجة لاستيراد فضاء الاسماء
Microsoft.SqlServer.Smo
او
Microsoft SQLDMO Object Library
و لكل منهما حسناته
لكن الاول اسرع
و الثاني هو عنصر com
الروابط التالية ستساعدك:
http://www.codeproject.com/cs/database/DBInstaller.asp
http://www.codeproject.com/useritems/Execute_Package_by_C_.asp
leena said
السلام عليكم
بغيت اسال كيف اغير ملحق الملف النصي اللى انشأته؟
وكيف اعرف عن فضاء الاسماء imports system…
يعني وين بالبرنامج بالضبط؟
لاني ماعرفت ومحتاجه اسوي الربط لانه مطلوب مني مشروع عن هالموضوع
اتمنى تساعدني…
شكرا
تمام كوجان said
لتغيير لاحقة الملف عليك انت تظهري لواحق الملفات
و ذلك من خلال القائمة Tools
ثم اختيار Folder Options
هناك يمكنك اظهار اللواحق
بالنسبة لفضائات الاسماء قومي بتحميل ملفات المثال المرفقة مع موضوعي
و اطلعي عليها
ملاحظة صغيرة:
هذه المدونة انتقلت
و بالتالي لن يكون هناك اي مواضيع جديدة
و بالنسبة للرد على تعليقاتكم على المواضيع الموجود حاليا
فقد يتأخر هذا الرد مني
لذا انصحكم بمتابعة المدونة الجديدة و المشاركة فيها بأراكم و تعليقاتكم
عنوان المدونة الجديدة:
http://www.blog.tammamkoujan.com/
sara said
السلام عليكم
أحب اعرف طيف يمكنني التنقل بين سجلات ال الداتا بيز من Access file
جربت هذا الكود ولكنه لم ينجح
this.BindingContext[dataset11].Position++;
فما العمل مع الAccess