الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فائدة استخدام Trasaction في الاتصال بقواعدالبيانات

مغلق
بدأه koao في 6 أبريل 2005 · 4 رد · 844 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

للـ Transaction فائده عظيمه .. لنفهم هذه الفائده .. لنفرض اننا نصمم قاعدة بيانات لبنك وافترضنا ان عميل جاء للبنك ومعه شيك يريد ان يضعه في حسابه .. هذا يعني اننا اولا سنخصم ( او بالاصح سنضع قيمة المبلغ في حقل السحب) هذا المبلغ من حساب صاحب الشيك ثم سنقوم بايداع قيمة الشيك الى حساب حامل الشيك .. واثناء العمليه الحاسوبيه تم الخصم من حساب صاحب الشيك ثم صار خلل في الاتصال بعد ما خصم المبلغ ولم يتم الايداع في حساب حامل الشيك .. فهذه مشكلة .. لذا نريد طريقه اذا حصل خلل فاننا نتراجع عن عملية الخصم

وبالمره ساشرح طريقة الاتصال بقاعدة البيانات من نوع اكسيس

اولا يجب ان نعرف اتصال مع قاعدة بيانات ويكون كالتالي

Dim con As New OleDb.OleDbConnection

ثم نعرف الـ Transaction ويكون كالتالي

Dim t As OleDb.OleDbTransaction

ثم نكتب دالة اكتشاف الاخطاء Try ثم نضغط على Enter في لوحة المفاتيح ستتولد عندك جملتين اخر الاولى

Catch ex As Exception

والثانيه

End Try

اكتب قبل الاخيره Finally وسيكون الكود كالتالي

Try

        Catch ex As Exception

        Finally

        End Try

فتكتب الكود الذي تريد اكتشاف الخطأ به بعد الـ Try واذا صار فيه خطأ فسينفذ ما بعد الـ Catch وسواءً كان هناك خطأ او لم يكن فسينفذ الكود الذي بعد Finally

اذا اكتب الاتي بعد الـ Try حتى اخبرك بغير ذلك

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

con.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=db1.mdb"

ثم نقوم بفتح الاتصال

con.Open()

ثم نقوب بامر الـ Transaction بان يبدأعمله ونربطه بالاتصال .. كالتالي

t = con.BeginTransaction

ثم نعرف كائن الاوامر .. كالتالي

Dim com As New OleDb.OleDbCommand

ثم نربط كائن الاوامر بالاتصال كالاتي

com.Connection = con

ونربطه مع الـ Transaction .. كالتالي

com.Transaction = t

ثم نكتب تعليمات الـ SQL واوامر التنفيذ وهي كالاتي

com.CommandText = "insert into Cust1 (Op_Date,Withdrow) values ('01/03/2005',300000)"
            com.ExecuteNonQuery()
            com.CommandText = "insert into Cust2 (Op_Date,Deposit) value ('01/03/2005',300000)"
            com.ExecuteNonQuery()

ولاحظ انني عنوتا اخطأت في كتابة values وكتبتها في التعليمه الثانيه value

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

t.Commit()

والان اكتب بعد الـ Catch التالي

اولا اظهار رساله للخطأ المقتنص وهو كالاتي

MsgBox(ex.Message)

وهنا تكمن الفائده بحيث لو كان هناك خطأ نريده ان يتراجع عن التغييرات .. ويتم ذلك بالكود التالي

t.Rollback()

ثم اكتب بعد الـ Finally التالي لاغلاق الاتصال مع قاعدة البيانات

con.Close()

وفي المرفق تجد المثال وقاعدة البيانات داخل الـ Bin .. جرب شغل البرنامج وانقر على زر الامر ثم افتح قاعدة البيانات ستجد انه لم يضيف شئ .. عدل عبارة value الى values ستجد انه عدل في قاعدة البيانات .. حاول انك تهمش العبارات التي له علاقة بالـTransaction وذلك بوضع فاصلة علوية (single cottation ) ورجع الخطأ في كتابة value .. ستلاحظ ان البرنامج اضاف الى الجدول الاول دون الثاني وهذا ما نريد تجنبه

واخيرا ادعولي بالخير في الدنيا والاخره

Transaction.zip

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#2

يعطيك العافيه وشرح جميل

#3

جزاك الله خير وفعلا هذه من فوائد Rollback التي نغفل عنها

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#4

احمد الله الذي من علي بما يكون به فائده لاخواني واساتذتي .. شكرا لكم على مروركم الكريم

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#5

بارك الله فيك يا أخي والله موضوع جداً مهم ومفيد ..

1 - سقوط الإنسان ليس فشلاً ، ولكن الفشل أن يبقى حيث سقط .

2 - الفاشلون قسمان : قسم فكر ولم يفعل ، وقسم فعل ولم يفكر .

-------------------------------------------------------

درس في ADO.NET 2005, التعامل مع الجداول المترابطة في ado.net 2005

درس في الإجراءات الفرعية ( العامة )

درس في ADO.NET من الصفر إلى الإحتراف .

هذا الموضوع مغلق.

مواضيع مشابهة