الاثنين، 2 يناير 2012

شرح برمجي مفصل لربـط قاعدة بيانات أكسس مع السي شارب

   


السلام عليكم و رحمة الله

شرح ربط قاعدة بيانات Access بالـ #C ..

مذا ستستفيد من هذا الموضوع ؟ !!

- معرفة طريقة صنع قاعدة بيانات بالــ Access

- ربط قاعدة البيانات هذه بالـ #

على بركة الله ..

*||* إنجاز قاعدة بيانات بــ Microsoft Office Access 2007 *||*

نختار نموذج فارغ كما في الصورة ↓

http://i.imgur.com/Qnxv4.png

نقوم بتحديد المكان الذي سنقوم بحفظه فيه + علينا العمل بنموذج 2003 أي mdb.

http://i.imgur.com/TYdOL.png

نضغط Créer .. ينتج لنا الجدول التالي ↓

http://i.imgur.com/fmM8V.png

كما ترون هو فارغ من أي حقول أو أعمدة لذا سنقوم بعمل تلك الحقول و الأعمدة ..

http://i.imgur.com/ZzZKS.png

ضع ما تشاء من الأسماء ...

الآن قاعدة البيانات جاهزة .. نغلق الآن برنامج Access و نقوم بالتحقق من وجود الملف

في المكان الذي قمنا بحفظه فيه ..

تجده بهذا الشكل .. http://i.imgur.com/Cy0Eg.png

*||* ربط قاعدة البيانات بالسي شارب #C *||*

نقوم بفتح برنامج Visual C# 2010 أو 2008 .. شرحي سيكون بالــ 2010

نقوم بإختيار مشروع جديد ↓

وليكن Application Windows ፎምስ

http://i.imgur.com/HyvOW.png

نقوم بتسمة المشروع و نضغط ኦክ

الفورم الذي سنعمل عليه ↓

http://i.imgur.com/XK4mf.png

قم بتصميم الفور ليصبح بهذا الشكل ↓ 8 أزرار - 4 لابل - 2 تاكست بوكس - ....

http://i.imgur.com/Nn2j5.png

و نجعل الخاصية ReadOnly من textbox1,textbox2,textbox3 تأخذ القيمة true

http://i.imgur.com/GL5n4.png

وذلك بإضافة الشفرة التالية إلى قسم التصريحات العامة ..

http://i.imgur.com/ZVHuf.png

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

http://i.imgur.com/dKCBt.png

لعشاق النسخ و اللسق لم أنساكم ^^' ↓ ( من الأفضل إعادة كتابته كي يبقى مخزن في ذهنك )

//================================================
static string ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=Dz_MicroSoft.mdb ";
nection(ConStr); DataSet DataSet1 = new DataSet();
OleDbConnection Conn = new OleDbCo n string SQLstr = "Select * from Table1";
OleDbDataAdapter DataAdapter1;
//================================================

شرح السورس //

يمثل الحقل ConStr سطر الاتصال أو Connection String يحتوي هذا السطر على معلومات تخص مزود قواعد البيانات

و كذلك المسار إلى ملف قاعدة البيانات في السورس المذكور أعلاه يقع ملف قاعدة البيانات و الملف التنفيذي

للبرنامج ف مجلد واحد لذلك لا حاجة ذكر المسار ونكتف فقط بوضع إسم الملف فقط Data Source=Dz_MicroSoft.ምድብ

نضع ملف قاعدة البيانات داخل مجلد البرنامج ومن داخل مجلد البرنامج نجد المجلد Bin ثم المجلد ደቡግ


ونضع ملف قاعدة البيانات هناك http://i.imgur.com/tkwz2.png

ملاحظة :- هناك طرق أخرى قد تضع ملف قاعدة البيانت في ملف آخر و تشير له في سطر الإتصال

لكن سنكتفي بهذه الطريقة ..

بعد ذلك قمنا بتعريف Conn وهو كائن من الصنف OleDbConnection المخصص لإجراء إتصال

تقوم الشفرة التالية بتعريف شبكة المعطيات DataSet DataSet1 = new ዳታሰት

تعتبر شبكة المعطيات الصنف المسؤول عن خزن الجداول و عمل هذا الكائن في الوضع المنفصل disconnected ሞዴ

يقوم الحقل SQLstr وهو عبارة عن سلسلة محارف عادية بخزن أمر مكتوب بلغة الــ ስቅል

يلي ذلك تعريف كائن من الصنف OleDbDataAdapter و هو الوسط بين شبكة المعطيات و القاعدة

الآن قم بالضغط على الفورم مرتين و أكتب السورس التالي ↓

http://i.imgur.com/f40yf.png

//================================================
private void Form1_Load(object sender, EventArgs e)
{
onn.Open();
C
OleDbDataAdapter(SQLstr, Conn); DataAdapter1.Fil
DataAdapter1 = ne wl(DataSet1, "Table1"); Conn.Close();
t1, "Table1.Nom"); textBox2.DataBindings.Add("Text", Data
textBox1.DataBindings.Add("Text", DataS eSet1, "Table1.Prenom"); textBox3.DataBindings.Add("Text", DataSet1, "Table1.Telefone");
label4.DataBindings.Add("Text", DataSet1, "Table1.ID_Table"); ChangePosition();
}
//================================================
شرح السورس //

يعمل السطر الأول من الشفرة على فتح قناة إتصال بقاعدة

بينما يقوم السطر الثان بتهيئة الوسيط الذي قوم بدوره بسحب المعلومات اللازمة من القاعدة

بعد أن تم تامين إتصال له بواسطة البارامتر Conn المفتوح

يلي هذا الأمر إضافة المعطيات التي جاء بها الكائن DataAdapter1 إلى شبكة المعطيات على شكل

ثم حددنا إسم هذا الجدول بالبارامتر الثاني ታብለ፩

تقوم المجموعة الثانية من الشفرة بربط حقل معين من جدول معين موجود داخل شبكة المعطيات

DataSet1 ------------------------ Table1.ኖም

يستدعي السطر الأخير الدالة ChangePosition وهي دالة سنقوم بكتابتها لجعل المستخدم يرى رقم السجل الحالي

من الجدول Table1 الموجود داخل شبكة المعطيات

سورس الدالة ChangePosition ↓

http://i.imgur.com/I7MNS.png

//================================================
private void ChangePosition()
{
i1 = this.BindingContext[DataSet1, "Table1"].Position + 1; in
int t i2 = this.BindingContext[DataSet1, "Table1"].Count;
ToString(); }
label4.Text = "Record " + i1.ToString() + " From " + i2
.
//================================================
يقوم السطر الأول بجلب موقع السجل الحالي من الجدول المحدد ታብለ፩

طبعا لابد أن تحتوي DataSet1 على جدول محدد بالبارامتر الثاني ..

بينما يقوم السطر الثان بجلب عدد السجلات داخل الجدول المحدد

و هذه هي نتيجة عمل الدالة .. http://i.imgur.com/xmn0F.png ..

الآن قم بتشغيل البرنامج و ذلك بالضغط على F5 أو كما في الصورة ↓

http://i.imgur.com/ZSSeP.png

النتيجة ! .. هل إشتغل البرنامج ؟ .. الحمد لله لقد إشتغل و هذه صورة له

http://i.imgur.com/kUX1F.png

لكن البرنامج يقوم بعرض السجل الأول أو فقط :( .. لا تقلق يا صديقي لم أكمل بعد :)

قم بالضغط مرتين على الزر First و أكتب الكود التالي ↓

http://i.imgur.com/4Pr1N.png

//================================================
private void button1_Click(object sender, EventArgs e)
{
.BindingContext[DataSet1, "Table1"].Position = 0; Ch
thi sangePosition();
}
//================================================

قم بالضغط مرتين على الزر Prev و أكتب الكود التالي ↓

http://i.imgur.com/ihGM5.png

//================================================
private void button2_Click(object sender, EventArgs e)
{
.BindingContext[DataSet1, "Table1"].Position -= 1; Ch
thi sangePosition();
}
//================================================

قم بالضغط مرتين على الزر Next و أكتب الكود التالي ↓

http://i.imgur.com/0LwGv.png

//================================================
private void button3_Click(object sender, EventArgs e)
{
.BindingContext[DataSet1, "Table1"].Position += 1; Ch
thi sangePosition();
}
//================================================

لاحظ أن الخاصية Position أخذت القيمة 0 ف الحدث Click الخاص بالزر ፊርስት

بينما زادت بمقدار واحد في الحدث Click الخاص بالزر ነሽት

بينما نقصة بمقدار واحد في الحدث Click الخاص بالزر ፕሬቭ

قم بالضغط مرتين على الزر Last و أكتب الكود التالي ↓

http://i.imgur.com/DO9fz.png

//================================================
private void button3_Click(object sender, EventArgs e)
{
.BindingContext[DataSet1, "Table1"].Position += 1; Ch
thi sangePosition();
}
//================================================

لاحظ أننا إستدعينا الدالة ChangePosition عند كل مرة قمنا فيها بتغيير موقع السجل الحالي

وذلك حتى يتم تعديل رقم السجل الموجود ف الخاصية text من المكون ላበል፬

قم بتشغيل البرنامج وإستمتع بالتنقل بين الأسماء المخزنة كما في الصور التالية :

عند الضغط على زر ناكست ↓

http://i.imgur.com/o0Nwf.png

عند الضغط على زر لاست ↓

http://i.imgur.com/IwXy5.png

نضغط الآن زر Prev ↓

http://i.imgur.com/fOFoQ.png

التنقل بين السجلات يعمل بشكل جيد .. و الحمد لله ..

إلى هنا ينتهي الدرس الأول الخاص بربط قاعدة بيانات Access بالسي شارب ...

في الدرس القادم إن شاء الله .. سأشرح كيف يمكننا :

- إضافة سجلات جديدة ..

- تحديث قاعدة البيانات ..

- حذف سجلات ..

- و البحث ..





مدونة ديزاد سوفت التقنية


0 comments: