البرمجة بفيجوال بيسك دوت نت - الدرس السادس : البرمجة الحقيقة

تنبيه مهم:

  • المنتدى عبارة عن أرشيف محفوظ للتصفح فقط وغير متاح التسجيل أو المشاركة
إنضم
27 يوليو 2009
المشاركات
60
مستوى التفاعل
0
النقاط
0
الإقامة
السعودية - مكة
الدرس السادس :
البرمجة الحقيقية ...

لعلك تذكر هذا الشكل ..

نقوم بربط بقاعدة البيانات التي صممناها بالبرنامج ونقل البيانات من حقول النموذج إلى الجدول أو العكس
ولكي تستوعب حقيقة الاتصال بقواعد البيانات وربط الجداول وطريقة حفظ البيانات أو جلبها نسرد القصة البرمجية الظريفة التالية :
افرض أن لديك كتاب ( Book1 ) يحوي على مجموعة مقالات ( نوادر حجا ) .. كل صفحة تحوي على رقم الصفحة وعنوان المقالة ونص المقالة وتريد جلب بيانات ( المقالات ) إلى حقول النموذج ( أدوات النص مثلاً ) ، نحتاج إلى ثلاث أشخاص ( كائنات في لغة البرمجة ) لإكمال تلك العملية البسيطة هم شخص يدعى ( المتصل Connection ) يقوم بعملية الاتصال بالكتاب ( Book ) مباشرة ، وشخص آخر يدعى ( الآمر المنفذ command ) هذا الشخص له عمائل كثيرة ( باللهجة المصرية ) ، مرة يجلب بيانات ( مقالات ) ومرة يحفظ ، ومرة يعدّل ومرة يحذف ..
ومرة يسوّي حاجات فوق ما تتصور .. ألـ..مهم .. ( مستعار من محاضرة الشيخ عبدالله عمر الأركاني ) ..
وهذا الشخص command يمر البيانات أحياناً إلى شخص آخر يدعى ( القارئ reader ) ( عبدالولي الأركاني )
( أحب المشائخ البرماويين هؤلاء وأستمتع لهم كثيراً ... )
وبعد ذلك و عن طريق reader يمكنك جلب البيانات بتمرير رقم الحقل أو اسمه كما سنرى ...

واعلم أن كائن الاتصال connection متفرع من قبيلة مشهورة هي Ado.Net وسوف تتعرف عليها عندما تتقدم في البرمجة إن شاء الله ..
ويتغير اسم الكائن connection بنوع قاعدة البيانات التي تريد الاتصال به مثلا إذا أردت الاتصال بقاعدة بيانات Access فإننا نسميه OleDbConnection وهو ابن متفرع من OleDb وهو يتفرع بدوره من الكائن Data وهو ابن متفرع من الكائن system ، ونقول : OleDbConnection ابن OleDb ابن Data ابن system بالوراثة فقط ..
ونكتب بلغة البرمجة :

System.Data.OleDb.OleDbConnection​

ويجب أن يكون تعريف الكائن كمتغير أولاً ثم إنشاء نسخة منه ( عملية الانستنساخ : وتعوّدوا عليها حتى صاروا ينسخوا أعضاء بشرية ، وأحياناً إنسان كامل كما نسمع .. ) ، ولتعرف على كائن اتصال اسمه cnn نكتب بالطريقة التالية :

Dim cnn As System.Data.OleDb.OleDbConnection​
وبنفس الطريقة نعرف كائن الأمر Command :

Dim cmd As System.Data.OleDb.OleDbCommand​

وبنفس الطريقة نعرف كائن الأمر reader :

Dim rdr As System.Data.OleDb.OleDbDataReader​

وللعلم يمكن كتابة الكود السابق وهو :
Dim cnn As System.Data.OleDb.OleDbConnection​
بطريقة مختصرة وهي :

Dim cnn As OleDb.OleDbConnection​
حيث حذفنا الأب والجد System.Data.
وسبب الحذف أنه افتراضيا يتم استيراد الفئة السابقة ( المجال ) في قائمة المراجع عند إنشاء برنامج جديد .. وسوف نتحدث عن هذه النقطة لاحقاً بشيء من التفصيل .. ولكن ذكروني ..

وحتى نستوعب الأمر ... نكتب أول الكود :

نبدأ بحفظ بيانات الأعضاء ، انقر على زر ( حفظ .. ) ، واكتب الكود التالي :

Dim cnn As System.Data.OleDb.OleDbConnection
Dim cmd As System.Data.OleDb.OleDbCommand
Dim rdr As System.Data.OleDb.OleDbDataReader​
cnn =

New OleDb.OleDbConnection
("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\Forum.mdb")​
cmd = New OleDb.OleDbCommand(" INSERT INTO MemberData (MemberCode , MemberName , RegDate , EMail ) VALUES ('" & txtMemberCode.Text & "' , '" & txtMemberName.Text & "' , '" & txtRegDate.Text & "' , '" & txtEMail.Text & "' ) ", cnn)

cmd.ExecuteNonQuery()​
الأسطر الثلاثة الأولى تم شرحها في الخطوة السابقة ..
السطر الرابع وهو :

cnn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\Forum.mdb")​
فيه : يتم تعريف كائن الاتصال مرة أخرى ككائن اتصال جديد ( نسخة ) ، مع تمرير نص الاتصال ، وفي نص الاتصال يتم اسناد مزود الاتصال Provider ، وبما أننا سنتصل بقاعدة بيانات من نوع access لذا اسندنا القيمة (Microsoft.Jet.OLEDB.4.0 ) ،
وكذلك تم تمرير اسم قاعدة البيانات ومساره إلى مصدر البيانات Data Source ..
وهذه الطريقة هي التي أفضلها .. ( وهناك طرق أخرى سوف أشرحها في درس لاحق إن شاء الله )
عند تنفيذ البرنامج والنفر على زر ( حفظ ) ، ستظهر رسالة خطأ مفادها أن الاتصال لم يتم فتحه ، لذا بعد السطر الرابع أضف الكود التالي :
cnn.Open
بعد تكوين الاتصال مع قاعد ة البيانات، ستأتي هذه الخطوة وهي ارسال جملة الاستعلام لحفظ البيانات من حقول النموذج إلى حقول الجدول MemberData :


cmd = New OleDb.OleDbCommand(" INSERT INTO MemberData (MemberCode , MemberName , RegDate , EMail ) VALUES ('" & txtMemberCode.Text & "' , '" & txtMemberName.Text & "' , '" & txtRegDate.Text & "' , '" & txtEMail.Text & "' ) ", cnn)​
- لاحط أنه دوما يتم نسخ الكائن للتعامل معه ، فهنا تم إنشاء نسخة من الكائن OleDbCommand وإسناده إلى المتغير cmd مع تمرير الاستعلام ( استعلام إضافة سجل إلى جدول ) و مممثل الاتصال cnn
الخطوة الأخيرة هي تنفيذ الاستلام السابق بالأمر ExecuteNonQuery المتفرع من الكائن cmd ، وهذا الأمر نستخدمه عند إضافة سجل أو حذفه أو تحديثه .
وهناك الأمر ExecuteReader ، ExecuteScalar من الأوامر التي نتطرق إليها في الدورس القادمة إن شاء الله .
هذا بالنفس للكود الذي يتم كتابته للزر ( حفظ ) .
واستخدمنا في فقط كائن الاتصال cnn ، وكائن الأمر cmm ، وتنفذ الأمر
مع تحديد قاعدة البيانات ومسارها ، وتحديد الجدول الذي يتم التعامل في الاستعلام ، والأمر

ExecuteNonQuery​

وانتظروني ...​
:shakehand:
 

جواد البحر

Active member
إنضم
15 مايو 2009
المشاركات
3,025
مستوى التفاعل
2
النقاط
38
الإقامة
مكة المكرمة

2e031f0ee12my.gif


بارك الله فيك وكثر الله من أمثالك
شرح وافي وكافي

ننتظر المزيد من إبداعاتك

ggg.gif

 
أعلى