PDA

View Full Version : بدست آوردن تعداد یک موجودیت در بانک



hassan1365
شنبه 12 خرداد 1386, 19:48 عصر
سلام
من میخوام با یه عبارت ... select count تعداد موجود در بانک رو پیدا کنم.این کد رو نوشتم ولی ایراد میگیره.
این کدیه که من نوشتم:


SqlCommand mysql2 = new SqlCommand(string.Format("SELECT count(usercode) as counter FROM tbltemp_permission WHERE (usercode = N'{0}')", Session["usercode"]), SqlConnection);
SqlConnection.Open();
String counter = (mysql2.ExecuteScalar() as String);
if (counter.CompareTo("0") == 0)
{}


و این ایرادی که میگیره(از compareto ایراد میگیره):


System.NullReferenceException: Object reference not set to an instance of an object


موفق باشید

Vahid_moghaddam
شنبه 12 خرداد 1386, 20:35 عصر
counter مقدار null داره. در واقع select شما چیزی برنگردونده.

hassan1365
یک شنبه 13 خرداد 1386, 08:25 صبح
سلام
خب آخه نباید null برگردونه.چون تو بانک اولا مقدار هست و ثانیا اگر هم هیچی تو بانک نباشه باید 0 برگردونه.فکر کنم مشکل از ExecuteScalar باشه.دوستان چه راه دیگه ای رو پیشنهاد میکنن.

موفق باشید

Alireza_Salehi
یک شنبه 13 خرداد 1386, 08:31 صبح
ExecuteScalar اگر چیزی برای خروجی نداشته باشه null برمیگردونه نه صفر.

به مثالی که در این لینک وجود داره دقت کنید (نحوه ارسال پارامترها و استفاده از ExecuteScalar و تبدیل نوع):
http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.asp x

در ضمن یک سوال : چرا شما خروجی تابع Count در SQL رو که یک عدد هست به String تبدیل کردید؟

بعدش هم مقایسه رشته ها در این مورد با علامت == امکان پذیره!

hassan1365
یک شنبه 13 خرداد 1386, 11:20 صبح
سلام
چون از سورس آماده استفاده کردم.البته فکر نمیکنم اشکال از تبدیل نوع باشه.مشکلش اینجاس که اصلا null برمیگردونه.ولی تو query analyzer که نوشتمش حداقل 0 برگردوند.
این کدی هست که نوشتم:



SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select count(usercode) as counter FROM tbltemp_permission where usercode=0";
cmd.CommandType = CommandType.Text;
cmd.Connection = SqlConnection;
SqlConnection.Open();
String counter = (cmd.ExecuteScalar() as String);
SqlConnection.Close();


موفق باشید

Behrouz_Rad
یک شنبه 13 خرداد 1386, 14:08 عصر
http://www.barnamenevis.org/forum/showthread.php?t=26275

hassan1365
یک شنبه 13 خرداد 1386, 16:27 عصر
سلام و مرسی.

موفق باشید