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

أنا أعتبر أن ال ADO.NET 2.0 إصدار فاشل

مغلق
بدأه مجرد إنسان في 9 نوفمبر 2006 · 16 رد · 2,888 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

قرأت العديد من المقالات بالعربية والإنجليزية وكذلك كتاب ADO.NET خطوة خطوة ، وملاحظاتي بشكل عام أن هذه النسخة من الـ ADO.NET فاشلة لعدة أسباب :

أولا : الصعوبة الشديدة في التعامل مع قواعد البيانات ، وتطويل الأمر بطريقة معقدة بدون أي فائدة واضحة .

ثانيا : مع كل الخصائص الجديدة ، وبعض التحكمات الجديدة إلا أن أهم التحكمات مفقودة .. على سبيل المثال لن تستطيع بواسطة OleDbDataReader إلا أن تتصل بقاعدة البيانات اتصال للقراءة فقط ( ليس هناك تعديل ) وللأمام فقط ( لا تستطيع استعراض السجل السابق ) فقط التالي .

سيقول البعض إن هذا قد وضع لتسريع الاتصال مع قاعد البيانات ، هذا صحيح ، لكن انظر إلى ثالثا :

ثالثا : ليس هناك - على حد علمي طبعا - وسيلة للاتصال بقاعدة البيانات بـ Connection Oriented ، مع إمكانية التنقل بين السجلات للأمام والخلف ، ولا بد حينئذ أن يكون بطريقة الاتصال المنقطع كما يسميها البعض ، فأين ما تزعمه مايكروسوفت من وضع كل الخيارات أمام المستخدم لاختيار الطريقة التي يود الاتصال بها .

رابعا : حتى في الاتصال المنقطع Connectionless Oriented ، أصبح أمر التنقل بين السجلات أعقد بكثير ، فليس هناك خصائص التنقل بين السجل التالي والسابق ، بل يجب أن تقوم بنفسك بتولي هذا الأمر عن طريق وضع INDEX للموضع الذي فيه المستخدم حاليا .... يا لها من طريقة معقدة ، حتى مايكروزفت - كما أسميها - لم تكلف نفسها لوضع Position لـ Curser الحالي ، يعني الموضع الذي عليه المستخدم

خامسا : في الاتصال Connection Oriented نجد الـ OleDbDataReader سريعة في جلب البيانات بعكس المنقطع ، وسيقول البعض حتى في الاتصال المنقطع .... ولكن للأسف نحن نجرب دائما على قواعد بيانات صغيرة .

خذ قاعدة بيانات كبيرة إلى حد ما وحاول استرجاع كل السجلات ( مثلا كتاب أو قاعدة تحوي 50 ألف سجل ، وتريد عرض شاشة لاستعراض النصوص والتنقل بين التالي والسابق مع استخدام المنقطع ) ، إذا حاولت استرجاع السجلات عن طريق

adapter.Fill(dataset)

أو

adapter.Fill(datatable)

فسوف تضطر للانتظار لمدة تزيد عن نصف دقيقة حتى يأتي لك أول سجل .

وشكرا

#2

أخي code hunter

شكرا لتجاوبك

أنا أبرمج على ال vb6 وقليلا على الدلفي .

انظر إلى السهولة في التعامل مع قواعد البيانات مع الإصدار AdoDB ، والتعقيد في ADO.NET

وللأسف فنحن حفظنا ما تقوله مايكروسوفت عن حلولها ، دون أن نرى بالفعل هل هي حلول أم تعقيدات .

لم تقدم أخي الحبيب أي حلول للتعقيدات المذكورة في مداخلتي الأولى ، إلا أنك ذكرت أنه يمكن الإدخال والمسح والتعديل بأوامر SQL .

فأين عمليات الاستعراض والتنقل بين السجلات ، وأين تطبيق التغييرات على القاعدة الفيزيائية ، عند العمل على DATASET ؟؟؟

ستجد أن تمرير التغييرات التي أجراها المستخدم في الوضع المنفصل أكثر تعقيدا من جلب البيانات نفسها

#3
اقتباس
.. هذه النسخة من الـ ADO.NET فاشلة .. 142.gif

.. الصعوبة الشديدة في التعامل مع قواعد البيانات .. 140.gif

.. تطويل الأمر بطريقة معقدة بدون أي فائدة واضحة .. 134.gif

.. أهم التحكمات مفقودة .. 152.gif

.. مايكروزفت - كما أسميها .. 154.gif

207.gif

أنا أخالفك تماماً ، وهذا الخلاف لا يفسد للود قضية .. 180.gif

ولكني أرى أنه من الإنصاف أن تتقن اللغة بشكل محترف ومن ثم تنتقدها بأسلوب راقي ولا أقصد التجريح ، فقط نقد بناء يتناول جوانب الضعف حتى يتم إضاحها و التغلب عليها وإزالتها إن أمكن ، أو إجلب البديل المناسب لها ..

221.gif

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

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

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

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

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

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

#4

ADO.NET بها العديد من الاخطاء لمن يعمل فى مشاريع كبيره كوارث !!!!

#5
yaseralshikh كتب:
207.gif

أنا أخالفك تماماً ، وهذا الخلاف لا يفسد للود قضية .. 180.gif

ولكني أرى أنه من الإنصاف أن تتقن اللغة بشكل محترف ومن ثم تنتقدها بأسلوب راقي ولا أقصد التجريح ، فقط نقد بناء يتناول جوانب الضعف حتى يتم إضاحها و التغلب عليها وإزالتها إن أمكن ، أو إجلب البديل المناسب لها ..

221.gif

عادي أخوي نحن كلنا نتعلم ......... والخلاف كما ذكرت لا يفسد للود قضية ...

لكنك حتى الآن لم تخبرني بحلول للمشاكل والتعقيدات التي ذكرتها ، ولم تذكر إلا كلاما عاما ، دون تفنيد ما ذكرت .... وإنما هو تكرار لما تقوله مايكروسوفت من قوة منتجاتها .!!!!!

أما قولك : جلب البديل ، فعندك بديلان .

الأول : الرجوع لاستعمال ADODB عن طريق الـ COM داخل الدت نت .

الثاني : كتابة مجموعة من الأكواد لتسهيل العملية Class مثلا .... واليوم رأيت أحد المبرمجين قد كتب Class جاهز لمثل هذا الأمر ... أرجو أن تطلع عليه بعين الإنصاف ... وتتأمل في الكود الذي كتبه .. وترى مدى الحاجة إلى كتاب عشرات الأسطر للتنقل بين السجلات والبحث في الأعمدة داخل الـسجلات المرتجعة .... تأمل الكود وسترى بنفسك حجم الجهد الذي يحتاجه المبرمج للوصول والتحكم الكامل في قواعد البيانات .

إليك الوصلة

http://www.codeproject.com/vb/net/adonetrecordset.asp

مع تحياتي

تم تعديل هذه المشاركة بواسطة مجرد إنسان في 9 نوفمبر 2006 في 10:50

#6

السلام عليكم

اقتباس
أولا : الصعوبة الشديدة في التعامل مع قواعد البيانات ، وتطويل الأمر بطريقة معقدة بدون أي فائدة واضحة .
أحسن اللهُ إليك هل تعلم : أنك تستطيع بناء ما يعرف بـ RAD وهو Rapid Application Development في خلال دقيقة تقريباً أو أقل

عن طريق الـ Wizard و هل تعلم أنك في بيئة مدارة بشكل قوي Managed Environment بحيث تستطيعل ربط الـ Stored Procedures

و غيرها من العناصر من خلال تلك البيئة , فلا أظن أن شركة Microsoft قدمت ما يعرف بـ Friendly Programs مثلما قدمت VS.NET 2005

وكأنك تعمل على برنامج Access لا على بيئة NET. مما فيه من مرونه تكاد تصل إلى حد الافراط.

اقتباس
ثانيا : مع كل الخصائص الجديدة ، وبعض التحكمات الجديدة إلا أن أهم التحكمات مفقودة .. على سبيل المثال لن تستطيع بواسطة OleDbDataReader إلا أن تتصل بقاعدة البيانات اتصال للقراءة فقط ( ليس هناك تعديل ) وللأمام فقط ( لا تستطيع استعراض السجل السابق ) فقط التالي .
أقول أحسن الله إليك : البرمجة عبارة عن منطق يوظفها المبرمج حسب مخيلته و إلمامه باللغة لا أكثر.
اقتباس
ثالثا : ليس هناك - على حد علمي طبعا - وسيلة للاتصال بقاعدة البيانات بـ Connection Oriented ، مع إمكانية التنقل بين السجلات للأمام والخلف ، ولا بد حينئذ أن يكون بطريقة الاتصال المنقطع كما يسميها البعض ، فأين ما تزعمه مايكروسوفت من وضع كل الخيارات أمام المستخدم لاختيار الطريقة التي يود الاتصال بها .
أخي العزيز : إن شركة Microsoft تريد أن تزيل منطق الاتصال المستمر بمنطق الاتصال المنفصل لذلك تجد كل الإمكانيات متوفرة في الوضع المنفصل

ما يطرح تساؤلات كالذي طرحته أنت للتو , والعملية أحتاجت 4 سنوات لإقناع المبرمجين أن الوضع المنفصل أضمن و أفضل و أحكم

ونقلهم بشكل تدريجي حتى تتجنب عملية الصدم المفاجئ و المباشر. وهذا هو الذي يظهر لي من سياسة الشركة والله أعلم.

اقتباس
رابعا : حتى في الاتصال المنقطع Connectionless Oriented ، أصبح أمر التنقل بين السجلات أعقد بكثير ، فليس هناك خصائص التنقل بين السجل التالي والسابق ، بل يجب أن تقوم بنفسك بتولي هذا الأمر عن طريق وضع INDEX للموضع الذي فيه المستخدم حاليا .... يا لها من طريقة معقدة ، حتى مايكروزفت - كما أسميها - لم تكلف نفسها لوضع Position لـ Curser الحالي ، يعني الموضع الذي عليه المستخدم

أولاً أحسن الله إليك المصطلح لا يسمى بـ Connectionless Oriented و إنما يعرف بـ Disconnected Environment

ثانياً : لو تعرفت أكثر على العنصر Binding source Object لتحاشيت طرح هذا السؤال .

اقتباس
خامسا : في الاتصال Connection Oriented نجد الـ OleDbDataReader سريعة في جلب البيانات بعكس المنقطع ، وسيقول البعض حتى في الاتصال المنقطع .... ولكن للأسف نحن نجرب دائما على قواعد بيانات صغيرة
بالنسبةِ لي جربت الوضع المنفصل على قاعدة بيانات SQL تحتوي على 100000 صورة تتراوح أحجامها بين 100 كيلو بايت و 400 كيلو بايت

وتقريباً قاعدة البيانات 7 GB وهذا نادر ما تجدة في المشاريع العربية و حتى الحكومية , مع ذلك البرنامج أسرع من البرق ... لماذا ؟

لانه كما أخبرتك و أنت أسبقنا في البرمجة : ان المنطق و الطريقة هما من يسرعان العمليات في المشروع وهما من يقتلانه!!!

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

أولاً :ما يعرف بـ Executing Commands Asynchronously وبه تستطيع أن تقوم بعملية جلب بيانات من مصدر

بينما تجلب بيانات أخرى من نفس المصدر دون إنتظار العملية الاولى من الانتها ء .

ثانياً :ما يعرف بـ execute multiple batches with that connection والمقصود هو تنفيذ مجموعات من أوامر TSQL

أو سلسلة من الاوامر البرمجية على قاعدة البيانات بعنصر إتصال واحد في وقتٍ واحد.

ثالثاً : Batch Updates وهذا يعني أنك تستطيع أن تقوم بتحديث مجموعة من الصفوف في آنً واحد, وليس كل صف على حدةِ ,

وذلك عن طريق تحديد قيمة الخاصية UpdateBatchSize الموجودة في العنصر SqlDataAdapter Object .

رابعاً : الـ SQL BlckCopy Class وهو القالب الذي يتولى نقل أو تحديث أو إدخال صفوف جدول في جدول أخر , والحديث عنه

يحتاج إلى كتاب بحاله, لكن بأختصار شديد : هذا القالب متوقع ان ينسى المبرمجين ما يعرف بـ DTS

والله أني لاعذرك لهذا الانتقاد اللاذع لهذه الشركة, بسبب العلاقة الحميمة مع VB6 وكذلك بسبب إحجامكم عن تشيد العلاقة مع عائلة الـ NET.

لكن أقول لك : أن بقائك في القديم: مضيعة للوقت و تخلف عن الركب , و ندامة فيما بعد, و خبرة زهيدة , وندامة شديدة , علمٌ بلا عمل

و عملٌ بلا طلب .

نصيحة من طالب إلى معلم : لا تجعل هذه الحجج تثنيك , و إلا لربما تجد نفسك يوماً وحيداً تتراما بين أطلال VB6 لا أنيس ولا جليس.

. والله أعلى و اعلم.

تم تعديل هذه المشاركة بواسطة الغملاسي في 9 نوفمبر 2006 في 15:13

في المثال يتضح المقال

#7

أنا أعترف أن مكينة ADO.NET عملاقة إن صح التعبير ، ولكن هذا لا يقلل من شأنها ويجعلها فاشلة بل يزيدها قوة وتألقاً ..

ويبقى علينا نحن أن نتعلمها ونتقنها ونتعرف على أسرارها ، ورغم كل ما قرأناه وتعلمناه مازلنا مبتدئين .. الأمر يحتاج إلى دراسة أكادمية ليس مجرد هواية ، ولكن للأسف الأكادميات على حد علمي مازالت تدرس مواد لغات برمجة قد أصبحت من الماضي والذكريات التاريخية التي نحكيها لأبنائنا ..

ولكن لحضه أنت تقول " كتاب عشرات الأسطر للتنقل بين السجلات والبحث " ، يا أخي أنا لا أعتقد ذلك وهل تسمي على سبيل المثال هذا الكود للإبحار في قاعدة البيانات بألاف الإسطر ..

		' Set the record position to the first record...
		MyCurrencyManager.Position = 0
		' Move to the next record...
		MyCurrencyManager.Position += 1
		' Move to the previous record...
		MyCurrencyManager.Position -= 1
		' Set the record position to the last record...
		MyCurrencyManager.Position = MyCurrencyManager.Count - 1

وهذا الكود للبحث هل هو عشرات الأسطر ..

MyDataView.RowFilter = "ask like('" + Trim(txtFind.Text) + "%')"

هل من الإنصاف أن نقول أن ما ذكرناه عشرات الأسطر ..

كل هذا ولم نتحدث عن مكينة ADO.NET 2.0 الجديدة حيث نجد BindingSource و TableAdapter ..

أظن أنك تفتقد MoveFirst و MoveLast و MoveNext و MovePrevious كما كان في أيام Recordset هي موجوده في 2005 ولكنا لم نتعلم ما فيه الكفاية وعند أول فشل قذفنا هذا الإصدار العملاق بالفشل كي نزيحه عن عواتقنا ..

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

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

إليك هذا الكود ..

		MyBindingSource.MoveFirst()
		MyBindingSource.MoveLast()
		MyBindingSource.MoveNext()
		MyBindingSource.MovePrevious()
		MyBindingSource.Filter = "ask like('" + Trim(txtFind.Text) + "%')"

حلفتك لا تزعل مني بسبب صراحتي .. فأنت كمن يطلب منا أن نترك الهاتف ونعود للحمام الزاجل ..

فالحق أحق أن يتبع .. أليس كذلك .

09.gif

تم تعديل هذه المشاركة بواسطة yaseralshikh في 9 نوفمبر 2006 في 16:24

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

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

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

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

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

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

#8
الغملاسي كتب:
لكن أقول لك : أن بقائك في القديم: مضيعة للوقت و تخلف عن الركب , و ندامة فيما بعد,

والله صدقت أخي الغملاسي، فالدت نت اختصرت علينا ساعات طويلة كنا نقضيها مع اللغات القديمة، بل إن الفجوال ستوديو2005 اختصر علينا نصف الوقت تقريبا الذي كنا نقوم به في الفجوال ستوديو2003 !!

#9

الأستاذ الكبير / الغملاسي ، والأستاذ الكبير / yaseralshikh

أشكركما لكل شيء ، ولأهم شيء ألا وهو المناقشة ، وتفنيد الكلام الذي طرحته ، وهذا ما احتاجه شخصيا ويحتاجه كل أحد ، وليس فقط رد الكلام دون بيان ما فيه .

كنت أود أن أعقب على كلامكما واسمحا لي ، وأنتم أساتذتنا ، فتحملوني

أولا : عرفت اتجاه مايكروسوفت نحو الاتصال المنقطع . ومع أني لست خبيرا مثلكم لكن سأتجه للمنقطع :)

ثانيا : لاحظت أن أكثر تجارب الأستاذ الغملاسي على SQL Server ، لكن تجربتي على OLE وجدت البطء الشديد عند فتح قاعد بيانات كبيرة الحجم نسبيا بالاتصال المنقطع ... فالله أعلم ، مع أن الأكواد التي أكتبها هي المنتشرة في الإنترنت ، بل هي الموجودة أساسا في Code Sinppet في الفجوال ستوديو ، ولا أظن أن هناك كود أكثر توافقية من ذلك ..

ثالثا : لاحظت في الخصائص التي ذكرها الأستاذ / الغملاسي أنها الخاصية الثانية لا تصلح مع الـ OLE ، وقد جربتها من قبل ، فهي تابعة لقواعد البيانات على ما اعتقد ، أما خاصية UpdateBatchSize فهي خاصة بـ SQL Server ، وكذلك خاصة SQLBulkcopy Class

رابعا : ما ذكره الأستاذ /yaseralshikh ، فهو مشكور عليه أيضا ، لكن الخاصة Position معتمدة على ما اعتقد على الحل BindingSource .

لكن ألا ترون معي ان BindingSource في النهاية ستكون معنمدة على DataSet أو DataTable مع TableAdapter ، وكلها والله أعاني من بطء شديد عند التحميل أول مرة إذا كانت القاعدة كبيرة ... أتكلم عن أكسس مع OLEDB

على كل حال أقدر جهودكما بارك الله فيكما ، وحرصكما على أن نتطور جميعا ونتعلم المزيد .... ونحن على هذا الدرب إن شاء الله

#10

كنت أتصفح الإنترنت ، ووجدت الكثير من الناس في المنتديات يعانون من مشكلة البطء عند استخدام الخاصة Fill .

وبلا شك يتحسن الوضع عند العمل على Release Mode بدلا من Debug Mode ، لكنه بكل حال ابطأ من استخدام ال ADODB أو استخدام الوضع المتصل .

هذه وصلة لبعض الشكاوى

http://www.velocityreviews.com/forums/t679...ing-aspnet.html

http://groups.google.com/group/microsoft.p...ea5908f720538ca

http://groups.google.com/group/microsoft.p...257eefedb6cb565

http://groups.google.com/group/microsoft.p...39d534fa05264ea

http://groups.google.com/group/microsoft.p...5fedabcf9e1cea6

http://forums.oracle.com/forums/thread.jspa?threadID=322624

http://groups.google.com/group/microsoft.p...2272eda40d492e5

http://groups.google.com/group/microsoft.p...fc5da80e5931adc

البعض يعتبر الأمر Bug في الـ ADO.NET

والبعض الآخر يتحايل عليه باستعراض 100 سجلا مثلا في كل مرة ، وطلب 100 أخرى عند الدخول في السجل 101 مثلا

مع جزيل الشكر للجميع

#11

أخي مجرد انسان هل تعلم أن ال ADO.NET 2.0 ركزت أكثر على التعامل مع

SQL server 2005 وذلك لأن الأثنان مترابطان كثيراً ,

حيث ان كثير من المزايا الكثيرة في ADO.NET 2.0 صممت لتستخدم مع Microsoft SQL server 2005 , وكذلك ايضاً كثيراً من المزايا الجديدة الموجودة في Microsoft SQL server 2005 لايمكن استخدامها إلا بواسطة ADO.NET 2.0

ملاحظة :

هذا الكلام مأخوذ من كتاب Wrox Professional ADO.NET 2.0

في اول صفحة في ال Introduction

#12

رداً على هذا الموضوع الذي أزعجني في بداية مابدأت في قراءة عنوانه وأفرحني عندما قرأت محتواه والردود الرائعة لمثل هذه الحالة .

أخي الكريم لاحظ أن لعملية البطء في الإتصال مع قواعد البيانات حلول كثيرة جداً كما ذكر الأخوان وأزيد في هذا الجانب أنه حتى شركة Oracle وهي من الشركات الرائدة والمنافسة لمايكروسوفت معترفة ضمنياً بقوة ADO.NET وقامت بإنشاء Tools خاصة بربط الــ Oracle مع الـ ADO.NET سواءاً VB.Net or ASP.NEt وللمعلومية فقط ( أنا أفضل إستخدام ADO.NET لقوتها في المشاريع الكبيرة وأنا أتحدث عن مشاريع كبيرة جداً مداها على مستوى العمل ضمن شبكات WAN لأنها أثبتت نجاحها بقوة كبيرة جداً وسأقوم بعمل درس مبسط قريباً --بعد 3 شهور "ولا تزعلوا على التأخير" -- يقوم بشرح مفصل للعمل ضمن بيئة الـ ADO.NET ، ولمن يريدها الآن فهي عبارة عن مقتطفات من دروس الأستاذ ( ياسر ) و دروس Microsoft Press والتي ستجدها في توقيعي حملها وستجد مايسرك إن شاء الله .

وللأهمية لمن قام بالعمل تحت بيئة VB6 ، بنسبة 70% منكم لن تستطيعو الإنتقال فوراً إلى العمل تحت منصة .NET ، وذلك لأنها ليست تحديث كما هو الحال ما بين Windows2000 و Windows2002 ، وضبط بعض الأمور البسيطة وووو إلخ .. ولكن هي عبارة عن نقلة نوعية في فكرة المبرج نفسة يجب عليه أن يغير طريقة تفكيره عن البرمجة ضمن منصة VB .

لذلك قم بأخذ نفس عميق وإذا كنت تعمل في شركة أو خاص خذ إجازة لمدة أسبوع على الأقل وبعدها قم بطباعة الجزء الخاص بالــ ADO.NET وأجلس بعد صلاة الفجر على الشرفة وضبط كاسة العصير المشكل وأبدأ بإسم الله بقراءة الفصل كأنك تقرأ عن تقنية جديدة ولغة جديدة تريد بداية تعلمها من الصفر وركز من الصفر ... 0000 .

ثم أبدأ بمشروع الآلة حاسبة ومن ثم مشروع تتعلم فيه الرسم بالــ GUI .

ثم أبدأ بتعمل OOP بشكل مبسط " طبعاً أنا ماذكرت تعلم طريقة تعريف المتغيرات والفصل الخاص به لأنها كما هي في الـ VB6 بنسبة 95% " .

ثم أبدأ بعمل مثال بسيط عن إستخدام قواعد البيانات بإستخدام Wizard وأنصح بإستخدام SqlServer .

وإلى الأمام ..

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

أعتذر عن الإنقطاع الكبير عن المنتدى وبالأخص عن هذا المنتدى وذلك نظراً لإنشغالاتي وعدم توفر Internet في المنزل

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

#13
اقتباس
خامسا : في الاتصال Connection Oriented نجد الـ OleDbDataReader سريعة في جلب البيانات بعكس المنقطع ، وسيقول البعض حتى في الاتصال المنقطع .... ولكن للأسف نحن نجرب دائما على قواعد بيانات صغيرة .

خذ قاعدة بيانات كبيرة إلى حد ما وحاول استرجاع كل السجلات ( مثلا كتاب أو قاعدة تحوي 50 ألف سجل ، وتريد عرض شاشة لاستعراض النصوص والتنقل بين التالي والسابق مع استخدام المنقطع ) ، إذا حاولت استرجاع السجلات عن طريق

كود

adapter.Fill(dataset)

أو

كود

adapter.Fill(datatable)

فسوف تضطر للانتظار لمدة تزيد عن نصف دقيقة حتى يأتي لك أول سجل .

انا معه 100%

عملنا بيع بالتجزئة

ولدينا قاعدة بيانات ضخمة جدا جدا جدا على الأوراكل

لدي جدول مكون من 200 ألف سجل

للأسف انتظر 30 ثانية حتى يفتح الفورم

لماذا لا يوجد طريقة لجلب الداتا تدريجيا

وبذلك يفتح الفورم سريعا للمستخدم وفي نفس الوقت تستمر التعبئة

لي حوالي شهرين الآن ولم أجد حل لهذا الموضوع

تحياتي

تم تعديل هذه المشاركة بواسطة qaher في 29 نوفمبر 2007 في 03:31

#14

يبدو أنك تستخدم الـADO.NET بطريقة خاطئة جداً إذن. جلب البيانات كلها دفعة واحدة خطأ كبير.

افتح موضوع جديد تشرح فيه المشكلة بدلاً من إحياء هذه الموضوع القديم.

#15

شكرا أخي الكريم سيستم داون على الرد

لكن فعليا فاتح موضوع جديد على الرابط التالي

/index.php?showtopic=143817

للأسف مافي حل

هذا الكود اللي أستخدمه لجلب البيانات في الحدث Form Load

Me.INVMSTTableAdapter.Fill(Me.InvmstDataSet.INVMST)

كما اني ماخليت مكان على النت إلا وبحثت فيه وماحصلت حل أبد أبد أبد

لا في المواضيع الجديده ولا القديمه

تحياتي لك

تم تعديل هذه المشاركة بواسطة qaher في 29 نوفمبر 2007 في 15:50

#16

ربما لانك لا تبحث بشكل جيد و لا تطبق ما تقرئه

راجع ال OverLoad الخاص بال Fill Method الموجودة بال DataAdapter و جرب البحث عن ال Custom Data Paging بال MSDN و لن اقول جوجل :D

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#17

راجعت اللي قلت عليه

ماحصلت OverLoad الخاص بال Fill Method الموجودة بال DataAdapter

ياليت تقللي ويش تقصد بالضبط

ولا حصلت في ال MSDN عن ال Custom Data Paging

منتظر ردك

تحياتي لكم

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…