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

لماذا نستخدم DataSet + DataAdapter ؟ بدلا من SQL مباشرة

مغلق
بدأه jooorj في 12 يناير 2007 · 7 رد · 1,840 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لماذا نستخدم DataSet + DataAdapter ؟ بدلا من SQL مباشرة

ايهما افضل نعمل مخزن في الذاكرة DATASET او DataTable أم نورسل الاوامر مباشرة

باستخدام SQLCommand

+ SQL

انا برأي SQL مباشرة بدون وسائط للتخزين المؤقت ومن ثم التحميل للسيرفر كما تفعل الداتا ست مع DataAdapter ?

موقوف من المشاركة لقلة الأدب

============================

#2

أخي العزيز أنت تتحدث عن الفارق بين ال connected & disconnected ways لربط التطبيقات بالداتابيز . وكل طريقة لها مزاياها وعيوبها ولاتوجد طريقة هي الأفضل علي الإطلاق.

فلو نظرنا إلي مميزات ال connected وعيوبها سنجد أنها أفضل للتطبيقات التي يحدث فيها الكثير من التعديلات بشكل سريع وعبر أكثر من مستخدم . فمثلا لو كان التطبيق خاص بحسابات العملاء او بمخازن او بحجز رحلات طيران او ... او .... الخ فانت تحتاج إلي تحديث البيانات بشكل مستمر وفي هذه الحالة فان هذه الطريقه في الاتصال هي الأنسب. ولكن هذه الطريقة لها عيوبها ويكفي أنها تحتاج إلي إتصال مستمر بين مصدر الداتا وبين التطبيقات التي تتصل بها ولذلك أنت لا تستطيع إستخدامها في ال web services وأيضا هناك تطبيقات لا تحتاج إلي التحديث بشكل سريع مثل برامج شئون العاملين فلماذا تستهلك اتصال دائم بين السيرفر واجهزة المستخدمين ؟!!

وهذا بالضبط هو ميزة ال disconnected حيث أنها لا تجري الاتصال الا في حالة تنفيذ الاستعلام او التعديل وبذلك لا تشكل عبئ علي السيرفر وهي الافضل من حيث ال performance ولكن عيبها هو ان الداتا لا تكون updated بشكل مستمر وهذا قد يؤدي الي حدوث conflict في الداتا

هذا هو رأيي المتواضع والسلام

#3

نعم اخي Massay

بياناتك دقيقة وحقيقية

وانا اعلم ذلك

لكن برنامج شئون العاملين كيف يستهلك اتصال دائم؟؟؟

موقوف من المشاركة لقلة الأدب

============================

#4

أنت تعلم بالتأكيد أن ال Connected يقوم بعمل update للبيانات الواردة من الداتابيز مع كل أمر سواء كان هذا الأمر إستعلام أو تعديل. وأنا أخذت برنامج شئون العاملين كمجرد مثال علي التطبيقات التي لا تحتاج إلي تحديث بياناتها بشكل فوري لأن التغيير في البيانات ربما لا يتم إلا مره يوميا . مثلا كل يوم يتم تسجيل حضور الموظف أو غيابه , إحتساب ساعات عمل إضافية أو.... أو..... . في هذه الحالة لماذا نفتح إتصال دائم مع الداتابيز ؟ هذا ما كنت أقصده والسلام

#5

لأا يا اخي الاتصال ليس بضرورة يعمل Update مع كل استعلام هذا الكلام غير دقيق مطلقا.

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

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

موقوف من المشاركة لقلة الأدب

============================

#6

سبب وجود كائنين للعملية هي للفصل بين العملية و البيانات و هو أحد أهداف الـOOP لذا يوجد كائن Dataset كحاوي بيانات و كائن DataAdapter ككائن يقوم بعمليات الداتابيس. في حالة عدم وجود حاجة للإحتفاظ بنسخة من البيانات فيمكن استخدام كائن الـcommand مباشرة دون الحاجة إلى أي من الإثنين.

#7
اقتباس
سبب وجود كائنين للعملية هي للفصل بين العملية و البيانات و هو أحد أهداف الـOOP لذا يوجد كائن Dataset كحاوي بيانات و كائن DataAdapter ككائن يقوم بعمليات الداتابيس. في حالة عدم وجود حاجة للإحتفاظ بنسخة من البيانات فيمكن استخدام كائن الـcommand مباشرة دون الحاجة إلى أي من الإثنين.

كلام جميل :)

والسؤال الحقيقي هو : - متى نحتاج فعلا لل DataSet وبالأحرى متى نحتاج لعمل نسخ محلية (مخازن للبيانات)

ومتى لا نحتاج ؟

سؤال : انا ابرمج برنامج جدولة الاعمال : المهمة - الوقت - ملاحظات - حسب المستحدم

هل يلزمني هنا كمثال بسيط (عمل dataSet) ؟ وكذلك برنامج أرشفة وثائق هل يلزم عمل مخازن بالذاكرة..

موقوف من المشاركة لقلة الأدب

============================

#8
اقتباس
والسؤال الحقيقي هو : - متى نحتاج فعلا لل DataSet وبالأحرى متى نحتاج لعمل نسخ محلية (مخازن للبيانات)

ومتى لا نحتاج ؟

عندما يكون هناك أجهزة كثيرة (Clients) تتصل بقاعدة البيانات التي على الـ Server و تشغيل العديد من الـ Transactions في أوقات واحدة من قبل الـ Clients كـ Select و Update و Delete مما يشكل ضغط على الـ Server مما ينتج بطء في التعامل مع الـ Database ... لذلك كان من الأفضل إستخدام الـ Disconnected Mode (أي الـ DataSet) حتى تكون كل التعاملات مع قاعدة البيانات على الـ Server على مستوى كل جهاز (Clients) على حدا... بمعنى إن هذه الأسلوب يستهلك موارد جهاز الـ User بدلاً من الضغط على موارد الـ Server ...

رأس الحكمة الإيمان بالله

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

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