50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

سوال از دستورات sql و سی شارپ

با سلام و خسته نباشید

من در سی شارپ مبتدی هستم و یک سوال ساده داشتم.

SqlCommand scomm = new SqlCommand();
scomm.CommandText = "select count(*) from User_Register where UserName=' " + RegUserNameTB.Text + " ' ";
scomm.Connection = conn;
int NumRec = scomm.ExecuteNonQuery();

من قصد دارم با دستور "Count" از sql، تعداد رکوردهای موجود در جدول را برگردانم اما بعد از trace دستورات بالا، مقدار متغیر NumRec که به صورت local آن را چک می کنم مقدار منفی یک می گیرد در صورتیکه هنوز هیچ رکوردی در جدول وجود ندارد.

پرسیده شده در 1395/07/06 توسط

3 پاسخ

1

با سلام، شما به جای استفاده از ExecuteNonQuery از ExecuteScalar استفاده کنید تا مشکلتون حل بشه.

پاسخ در 1395/07/06 توسط
1

دستور ExecuteNonQuery یه مقدار int بر میگردونه، اما این مقدار مربوط به تعداد رکوردی هست که توسط Query شما تغییر کردند، برای مثال شما زمانی که با دستور update رکوردهایی رو داخل جدول به روز رسانی می کنید، خروجی دستور ExecuteNonQuery تعداد رکوردهایی هست که توسط دستور update تغییر داده شدند، اما دستور ExecuteScalar مقدار خروجی دستوری مثل SELECT COUNT رو برای شما به صورت object بر میگردونه، object به این خاطر که کلاس پدر تمامی نوع ها در دات نت هست، هر مقداری رو میشه داخلش نگه داری کرد و به همین خاطر باید مقدار خروجی ExecuteScalar رو تبدیل به int کنید.

پاسخ در 1395/07/06 توسط
0

میتونم بپرسم دلیلش چیه؟ چون من با دستوری که شما گفتید رفتم درست شد ولی خب مجبور شدم cast کنم به int

ممنونم

پاسخ در 1395/07/06 توسط

پاسخ شما