أهلا بكم في عالمي


الربط مع قواعد البيانات في الدوت نت
Data Access with .NET

بسم الله الرحمن الرحيم
ماذا ستتعلم من هذا الدرس :

مستوى الدرس : مبتدأ

لغة البرمجة : C# , VB.NET

مضمون الدرس : اذا كنت مبتدأاً يعلمك هذا الدرس واحدة من طرق الربط مع انواع مختلفة من قواعد البيانات

البداية :

عندما تكتب تطبيق قواعد بيانات فإنك أول ما ستحتاجه هو تحديد عبارة الاتصال بالقاعدة , و تختلف هذه العبارة باختلاف
نوع قاعدة البيانات التي تتعامل معها و نوع الاتصال الذي تقوم به مع القاعدة .
من خلال هذا الدرس سأعلمك واحدة من اسهل الطرق للاتصال بقاعدة البيانات و التي توفر لك طريقة سهلة و مريحة للإتصال
بمختلف أنواع قواعد البيانات . طبعا هناك طريقة أخرى سهلة جداً من خلال إضافة مكونات قواعد البيانات من لوح الادوات لكن بصراحة أنا شخصيا لا احب هذه الطريقة لأن الاتصال و التعامل مع البيانات من خلال الشيفرة يجعلني احس بسيطر و قدرة اكبر على التحكم بالبيانات.

هذا الدرس مطبق على :
– Microsoft Visual Studio .NET 2005
– 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”
كما في الصورة التالية :

1.JPG

قم بتغيير اسم الملف إلى Connection.udl (عند تغيير اسم الملف تأكد من أنك غيرت لاحقته فعلا و إلا فإنه سيبقى ملفا نصيا )

عند تغيير اسم الملف ستظهر لك الرسالة التالية :

2.JPG

انقر Yes , ستتحول أيقونة الملف إلى الشكل التالي :

3.JPG

سنبدأ أولا بالاتصال مع قاعدة البيانات SQL Server 2000 , انقر على الملف , سفتح لك نافذة قد تكون مألوفة لك اذا كنت قد كتبت تطبيقات قواعد بيانات من قبل .
اذهب إلى الصفحة Provider:

4.JPG

قم باختيار Microsoft OLE DB Provider for SQL Server (يبدو انك قد لاحظت كلمة OLE في العبارة رغم
اننا قلنا بأنه لن نستخدم OLE في الاتصال بـ SQL Server ثق بي فقط و أكمل)
انقر على الزر Next , ستنتقل عندها إلى الصفحة Connection

5.JPG

قم بتحديد اسم السرفر الذي تتواجد عليه SQL Server ( في مثالنا هذا هو TAMMAM_PC )
ثم قم بتحديد طريقة الدخول للقاعدة (في المثال قمت باستخدام أمان ويندوز) , في الجزء الثالث و الأخير أنقر على
القائمة المنسدلة و قم بتحديد قاعدة البيانات التي تريد الاتصال بها (في هذا المثال استخدم قاعدة Northwindالمرفقة مع SQL Server كمثال) , الان كل شيء جاهز تقريبا انقر على الزر Test Connection اذا كان كل شيء صحيحا ستظهر لك الرسالة التالية :

6.JPG

انقر زر OK لتغلق الرسالة ثم زر OK لتغلق النافذة .

اذهب الان إلى Visual Studio .NET قم بإنشاء مشروع جديد (رغم أنني سأضع الشيفرة بالـ C# و الـ VB.NET إلا
ان الصور ستكون للمشروع المكتوب بالـ C# ) و قم بتسميته CreateConnection كما في الصورة :

7.JPG

قم بإضافة زر إلى النموذج و قم بتغيير خاصية الـ Text له إلى : SQL Server Test Connection كما في الشكل :

8.JPG

انقر بزر الفأرة الأيمن على النموذج و اختر View Code , قم بإضافة فضاء الاسماء System.Data.SqlClient
إلى البرنامج في الجزء العلوي من الشيفرة و ذلك لدعم SQL Server :

C# :

using System.Data.SqlClient;

VB.NET :

Imports System.Data.SqlClient

عد إلى واجهة التصميم و انقر على الزر ثم قم بكتابة ما يلي :

C# :

try
{
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 :

Try

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 :

9.JPG

بدءاً من عبارة Integrated Security قم بنسخ السطر إلى نهايته (لاحظ اننا تجاهلنا العبارة Provider=SQLOLEDB.1; في
بداية السطر لأننا نتصل من خلال الفضاء System.Data.SqlClient و ليس من خلال
System.Data.OleDb رغم انه يمكنك تجاهلها بالنسبة لـ OLE أيضا لانه القيمة الافتراضية لكن من الفضل وضعها عند استخدامه)
و من ثم الصقه في الشيفرة عند objConn.ConnectionString في مثالنا سيكون بالشكل التالي :

C# :

objConn.ConnectionString = ” Integrated Security=SSPI;Persist Security
Info=False;Initial Catalog=Northwind;Data Source=TAMMAM_PC”;

VB.NET :

قم بضغط F5 سيتم تنفيذ البرنامج انقر على الزر و اذا مان كل شيء صحيحا ستظهر لك الرسالة التالية :

10a.JPG

الان انهينا ما يتعلق بالاتصال بـ 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# :

using System.Data.OleDb;

VB.NET :

imports System.Data.OleDb

عد إلى واجهة التصميم و انقر على الزر الثاني ثم قم بكتابة ما يلي :
C# :

try
{
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 :

Try

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 :

11.JPG

بدءاً من كلمة Provider قم بنسخ السطر إلى نهايته , و من ثم الصقه في الشيفرة عند objConn.ConnectionString في مثالنا سيكون بالشكل التالي :
C# :

objConn.ConnectionString = @” Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test.mdb;Persist Security Info=False”;

VB.NET :

objConn.ConnectionString = ” Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Test.mdb;Persist Security Info=False”

قم بتنفيذ البرنامج ثم اضغط الزر الثاني ستظهر لك الرسالة :

12.JPG

هكذا تكون تعلكت كيف تنشأ عبارة الاتصال مق قواعد بيانات SQL Server و OLE و بالتالي اصبح من السهل عليك ان تتوسع و تربط مع اي قاعدة بيانات تريدها

الشيفرة :

لتحميل شيفرة البرنامج :
CreateConnection.zip

كلمة أخيرة :

اتمنى ان تكون قد استفدت من الدرس , اذا كان عندك اية ملاحظات او اكتشفت اي خطأ أو كنت تملك معلومات اضافية قد تساعدني
اتمنى ان تراسلني و تخبرني بما عندك .

للمزيد من الدروس يمكنك زيارة مدونتي الإلكترونية https://tammamkoujan.wordpress.com/
اذا كنت ترغب بمراسلتي Tammam84@Yahoo.com
ملاحظاتك و استفساراتك مرحب بها على الدوام .

تمام كوجان في 17/03/2007
ُEmail : TammamKoujan@Gmail.com
يجوز نشر هذه المقالة أو أجزاء منها بشرط المحافظة على اسم الكاتب و ذكر المصدر

Comments on: "الربط مع قواعد البيانات في الدوت نت" (10)

  1. شرح ممتاز .. جزاك الله خيرا
    أحييك بشدة على مدونتك الأكثر من رائعة .. ومواضيعك المتنوعة المفيدة
    ما شاء الله
    أحب اسأل عن رأيك حول موضوع الربط مع قواعد المدونات .. أيهما تفضل استخدام الكود السابق داخل بلوكات البرنامج أم استخدام الويزارد الملحق بالدوت نت …

  2. الله يسلمك

    بالنسبة للربط فأنا بصراحة لا استخدم الويزارد
    مطلقا و لا اضع على النموذج اي اداة مثل DataSet او غيرها
    من الادوات التي تنجز الامور بسرعة
    بل اقوم بالربط و التعامل من خلال القاعدة ربما لأنني
    اكره الويزارد الذي يخفي كل شيء و يعطيك النتيجة مباشرة
    و ربما لأنني احس انني عندما اقوم بذلك من خلال الكود احس بسيطرة و تحكم اكبر

  3. جزاك الله خير ويا ريت يكون في سلسلة دروس للتعامل مع قواعد البيانات لاني مبتديء ومشغوف للتعلم

  4. جزاك الله خير بس انا برده بروح اخد النص من الملف هل في طريقة ممكن من خلالها اخذ النص من خلال الأبلكيشن مباشره

  5. يمكنك ان تأخذ النص من خلال التطبيق مباشرة
    فعند تشغيل التطبيق يمكنك ان تظهر للمستخدم نافذة
    تظهر السرفرات المتاحة و التي منصب عليها محرك قواعد البيانات و بعد ان يحدد المستخدم السرفر تظهر له قائمة بقواعد البيانات المتاحة على هذا السرفر و من ثم يختار قاعدة البيانات التي سيرتبط معها التطبيق
    و عند الانتهاء من ذلك ينشأ البرنامج عبارة اتصال و يحفظها في مكان ما كالريجستري 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

  6. السلام عليكم

    بغيت اسال كيف اغير ملحق الملف النصي اللى انشأته؟

    وكيف اعرف عن فضاء الاسماء imports system…
    يعني وين بالبرنامج بالضبط؟

    لاني ماعرفت ومحتاجه اسوي الربط لانه مطلوب مني مشروع عن هالموضوع

    اتمنى تساعدني…

    شكرا

  7. لتغيير لاحقة الملف عليك انت تظهري لواحق الملفات
    و ذلك من خلال القائمة Tools
    ثم اختيار Folder Options
    هناك يمكنك اظهار اللواحق
    بالنسبة لفضائات الاسماء قومي بتحميل ملفات المثال المرفقة مع موضوعي
    و اطلعي عليها

    ملاحظة صغيرة:
    هذه المدونة انتقلت
    و بالتالي لن يكون هناك اي مواضيع جديدة
    و بالنسبة للرد على تعليقاتكم على المواضيع الموجود حاليا
    فقد يتأخر هذا الرد مني
    لذا انصحكم بمتابعة المدونة الجديدة و المشاركة فيها بأراكم و تعليقاتكم
    عنوان المدونة الجديدة:
    http://www.blog.tammamkoujan.com/

  8. السلام عليكم

    أحب اعرف طيف يمكنني التنقل بين سجلات ال الداتا بيز من Access file
    جربت هذا الكود ولكنه لم ينجح

    this.BindingContext[dataset11].Position++;

    فما العمل مع الAccess

  9. Ahmed Lotfy said:

    ألف شكر على معلوماتك القيمة

  10. السلام عليكم عند محاولة الاتصال بقاعدة البيانات من نوع اكسس تظهر رسالة خطا تبين ان الاتصال غير صحيح هل من حل لهذه المشكلة

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s