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

كيف أستخرج فيمة Queryهذي Select Count(*) من Oledbdatareader

بدأه Here is C# في 16 يونيو 2008 · 4 رد · 835 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ،،

عندي الاستعلام التالي :

Select count(*)
From TableName

وقمت بتنفيذ بهذا الشكل:

string selectString11 = "SELECT count(*) FROM TableName";

			OleDbCommand cmd11;
			cmd11 = new OleDbCommand(selectString11, cn11);

			OleDbDataReader reader11 = cmd11.ExecuteReader();

ولكنني لا أعرف كيف أسترجع نتيجة الاستعلام ، وهي رقم بطبيعة الحال ..

لو كانت النتيجة صفوف Rows كان استرجعتهم باستخدام While(reader11.read) بحيث يقرأ لي في كل مرة صف ، وداخل اللوب أقرأها بالطريقة هذي :

reader11[0].ToString()

ومكان الصفر أكتب ترتيب العمود column أو اسمه

أما في حالتي هذه فنتيجة الاستعلام (رقم) ..

أحد عنده فكرة ؟

تم تعديل هذه المشاركة بواسطة Here is C# في 16 يونيو 2008 في 12:07

#2

اسهل طريقة هي عدم استخدام reader أصلاً. الـoledbcommand لديه دالة هي ExecuteScalar تستخدم لمثل هذه الحالات.

#3

شكرا لك أخي الكريم على ردك ..

ولكن كما يظهر في الـ Tool Tip في الصورة أدناه ، فـ ExecuteScalar لا ترجع عدد الصفوف ..

جربت استخدام ExecuteNonQuery ولكنه أرجع لي (-1) ، لأنه في الحقيقة لا يوجد أي صف تم تعديله بـ Update أو Insert ..

post-18942-1213620976_thumb.png

#4

ExecuteScalar تعيد نتيجة الإستعلامات الأحادية النتيجة. أي ترجع قيمة أول عمود في أول صف. لذا فهي مناسبة للإستخدام مع select count(*)

ExecuteNonQuery تستخدم فقط في الإستعلامات التي لا تعيد قيم مثل أوامر الإضافة و التعديل و الحذف

#5

مزبوط عليك أخوي ..

اشتغلت تمام الآن .. بالشكل التالي :

int n = Int32.Parse(cmd11.ExecuteScalar().ToString());

الله يفتح عليك ..

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