تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
لماذا يتم انشاء العديد من كائنات الاتصال
#11
(21-04-23, 08:02 PM)foo كتب : استاذ عبدالله الدوسري هل لـ SAVE TRANSACTION مفيدة في حالة اتصالين منفصلين؟


دعنا نشبه الـ Transaction بـ أنبوب كبير ، 


أي إتصال لم يدخل ضمن الـ Transaction ، ببساطة ليس له علاقة في أي عملية تحدث داخل الـ Transaction 


 الـ Save Transaction : لن تفيد أي إتصال خارج الـ Transaction

وظيفتها فقط حفظ نقطة عودة ( داخل الـ Transaction )

الـ Transaction : ( سيدخل فيه عدة عمليات مثلاً ، عملية 1، عملية 2، عملية 3، عملية 4، عملية 5، عملية 6، عملية 7، إلخ..... )

بدأت العمليات كلهم في نفس الـ Transaction 


العمليات كالتالي :

---------------------------------------------
بداء الدخول في  الـ Transaction 
---------------------------------------------
بدأت عملية 1
إنتهت بنجاح
---------------------------------------------
بدأت عملية 2
إنتهت بنجاح
---------------------------------------------
( Save Transaction ) حفظ نقطة عودة إلى هذا المكان في حال فشلت العمليات التالية بعد هذة النقطة
نقطة العودة تم تسميتها : ( Save_Point_1 )
---------------------------------------------
بدأت عملية 3
إنتهت بنجاح
---------------------------------------------
بدأت عملية 4
فشلت
---------------------------------------------
ROLLBACK TRANSACTION Save_Point_1  العودة إلى نقطة الحفظ المسماه ( Save_Point_1  )
وكأن العمليات رقم 3 ورقم 4 لم تحدث إطلاقاً 
نستطيع تغيير مسار العمليات في هذة الحالة
---------------------------------------------
بدأت عملية 6
إنتهت بنجاح
---------------------------------------------
بدأت عملية 7
إنتهت بنجاح
---------------------------------------------
COMMIT TRANSACTION
الخروج من الـ Transaction بنجاح





في السيناريو السابق 
العمليات رقم 3 ورقم 4 لم تحدث

(22-04-23, 08:22 AM)سعود كتب : ما رايكم بالطريقة التالية هل ستسبب مشكلة؟
PHP كود :
using con as new oledbconnection(str)
using cm as new oledbcommand(sql,con)
if 
con.state connectionstate.closed then con.open

هنا الاجراءات

if con.state connectionstate.open then con.close
end using
end using 


خصوصا الـFunctions
كل تحقق او اجراء فيه هكذا هل يسبب مشكلة ام انه عادي؟
شكر الله لكم جميعا و كل عام و انتم بخير.

ممتاز جداً إستخدامك للـ Using في مثل هذة الحالات التي لا نحتاج فيها بقاء الكائنات بعد إنتهاء العملية.
لا يوجد مشكلة في الكود، بما أنك أنت من يتحقق من القيمة التي ستعود من هذة الـ Function
وبناءً عليها تقوم باللازم

ملاحظة : ( في هذة الحالة : لا تحتاج أبداً أن تسأل عن حالت الإتصال إذا كان مفتوح أو مغلق، لأنه وبكل تأكيد مغلق ، لأنك للتو أنشائت هذا الكائن وبكل تأكيد حالت الإتصال مغلق )

هذة نسخة أفضل :
   
الرد }}}
تم الشكر بواسطة: سعود , foo
#12
لتوي جربت توحيد كائن اتصال وواجهت مشكلة متكررة وهي مسالة الاتصال مغلق :: اجراء حالي يتصل بقاعدة البيانات عبر con مثلا وهو واحد و بنفس الوقت ينفذ استعلام عبر function  وهنا تظهر المشكلة .....
لا افضل من تكرر كائنات الاتصال مادام هذا متاح
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة: ابو محمد محمد محمد
#13
(21-04-23, 08:02 PM)foo كتب : استاذ عبدالله الدوسري هل لـ SAVE TRANSACTION مفيدة في حالة اتصالين منفصلين؟

(26-04-23, 06:17 PM)سعود كتب : لتوي جربت توحيد كائن اتصال وواجهت مشكلة متكررة وهي مسالة الاتصال مغلق :: اجراء حالي يتصل بقاعدة البيانات عبر con مثلا وهو واحد و بنفس الوقت ينفذ استعلام عبر function  وهنا تظهر المشكلة .....
لا افضل من تكرر كائنات الاتصال مادام هذا متاح

مشكلة الاتصال مغلق يبدو لانك تستخدم كائن الاتصال في بعض الجهات وتقوم بغلقه
لن يتم غلقه طالما لم تغلقه انت وهذا من واقع تجربة
في مشروع عندي كامل استخدم كائن واحد وافتحه مرة واحدة ويبقى مفتوحا حتى يتم غلق المشروع
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم