السلام عليكم
قرأت العديد من المقالات بالعربية والإنجليزية وكذلك كتاب ADO.NET خطوة خطوة ، وملاحظاتي بشكل عام أن هذه النسخة من الـ ADO.NET فاشلة لعدة أسباب :
أولا : الصعوبة الشديدة في التعامل مع قواعد البيانات ، وتطويل الأمر بطريقة معقدة بدون أي فائدة واضحة .
ثانيا : مع كل الخصائص الجديدة ، وبعض التحكمات الجديدة إلا أن أهم التحكمات مفقودة .. على سبيل المثال لن تستطيع بواسطة OleDbDataReader إلا أن تتصل بقاعدة البيانات اتصال للقراءة فقط ( ليس هناك تعديل ) وللأمام فقط ( لا تستطيع استعراض السجل السابق ) فقط التالي .
سيقول البعض إن هذا قد وضع لتسريع الاتصال مع قاعد البيانات ، هذا صحيح ، لكن انظر إلى ثالثا :
ثالثا : ليس هناك - على حد علمي طبعا - وسيلة للاتصال بقاعدة البيانات بـ Connection Oriented ، مع إمكانية التنقل بين السجلات للأمام والخلف ، ولا بد حينئذ أن يكون بطريقة الاتصال المنقطع كما يسميها البعض ، فأين ما تزعمه مايكروسوفت من وضع كل الخيارات أمام المستخدم لاختيار الطريقة التي يود الاتصال بها .
رابعا : حتى في الاتصال المنقطع Connectionless Oriented ، أصبح أمر التنقل بين السجلات أعقد بكثير ، فليس هناك خصائص التنقل بين السجل التالي والسابق ، بل يجب أن تقوم بنفسك بتولي هذا الأمر عن طريق وضع INDEX للموضع الذي فيه المستخدم حاليا .... يا لها من طريقة معقدة ، حتى مايكروزفت - كما أسميها - لم تكلف نفسها لوضع Position لـ Curser الحالي ، يعني الموضع الذي عليه المستخدم
خامسا : في الاتصال Connection Oriented نجد الـ OleDbDataReader سريعة في جلب البيانات بعكس المنقطع ، وسيقول البعض حتى في الاتصال المنقطع .... ولكن للأسف نحن نجرب دائما على قواعد بيانات صغيرة .
خذ قاعدة بيانات كبيرة إلى حد ما وحاول استرجاع كل السجلات ( مثلا كتاب أو قاعدة تحوي 50 ألف سجل ، وتريد عرض شاشة لاستعراض النصوص والتنقل بين التالي والسابق مع استخدام المنقطع ) ، إذا حاولت استرجاع السجلات عن طريق
adapter.Fill(dataset)
أو
adapter.Fill(datatable)
فسوف تضطر للانتظار لمدة تزيد عن نصف دقيقة حتى يأتي لك أول سجل .
وشكرا











