السلام عليكــم ورحمـة الله وبركاتــه ،،
إستفسار : أريد أن أقوم بإدخال عدد من السجلات دفعة واحدة بمجرد الضغط على زر حفظ من واجهة البرنامج المتصلة بقاعدة البيانات ( واجهة البرنامج مصممة بواسطة فيجول ستيدو2005 C# وقاعدة البيانات مصممه ببرنامج sql server 2005 )
حل الشخصي ( الذي قمت أنا بإستخدمه ) :
1-في برنامجي هناك زرين : زر حفظ و زر إضافة
2- المستخدم يضغط على زر إضافة يعبئة البيانات الخاصة بالسجل
حالات الحفظ بعد الضغظ لى زر حفظ
الحالة الأولى : إدخال سجل واحد وحفظه
3- في حالة الضغط على حفظ يقوم البرنامج بحفظ السجل الواحد الذي قام بإضافته المستخدم على المستخدم الآن أن يضغط على زر إضافة مرة أخرى ثم يسجل البيانات ثم حفظ وهذه علمية متعبة
الحالة الثانية : إضافة عدد من السجلات إلى الذاكرة ثم الضغط مرة واحدة على زر الحفظ
4-في حالة الضغط على زر إضافة ** مرة أخرى بعد إدخال بيانات السجل الأول ** يقوم البرنامج بحفظ بيانات السجل الأول في مصفوفة ويضع رقم 1 تحت زر حفظ معلنا أن هناك سجل تم إضافته لدينا فقط في الذاكرة وتمسح البيانات السابقة من ال textbox لإستقبال بيانات السجل الثاني وهكذا فرضا أكتفى المستخدم بإضافة 10 سجلات للذاكرة والآن يريد الحفظ بمجرد الضغط على زر * حفظ* مرة واحدة يقوم البرنامج بإدخال جميع السجلات المحفوظة في المصفوفة إلى قاعدة البيانات ( تسهيلا للمستخدم بدل من أي يضغط زر إضافة 10 مرات وز حفظ 10 مرات ) سيضغط هنا على زر إضافة 10 مرات وزر حفظ مرة واحدة فقط .
(( النتيجة )) : لقد قمت فعليا بتطبيق هذه الفكرة ونجحت لكن ميكانيكة الحفظ بطىء نوع معا أقصد السرعة لأنني ساقوم بإستدعاء الإجراء الذي يقوم بعمل insert 10 عند طريق حلقة تكرارية وبعد إدخال السجلات العشرة أقوم بعمل filling to the dataset
الحل الآخر ( الذي أريد مناقشته معكم ) هو بإستخدام sql copy bulk ?
السؤال هل سيفي هذا الأمر بالغرض يدخل السجلات مرة واحدة وهل سيكون هناك سرعة إذا ماقارنه بطريقتي التي عرضتها بالأعلى .
شكرا لتعاونكم وأعذورني للإطالة وبمناقشة هذا الموضوع سيتفيد الكثير .. بإذن الله ..
أخوكم
زيدان