PDA

View Full Version : بروز خطا در خواندن مقدار از SqlDataReader



hesam_dj10
دوشنبه 27 بهمن 1393, 12:42 عصر
سلام من این کد رو نوشتم ولی ارور میده



conn.Open();
SqlCommand cmd = new SqlCommand("SELECT max(daronsn) FROM moshtarak", conn);

SqlDataReader dr = cmd.ExecuteReader();

if (dr.HasRows)
{


textBox7.Text = dr["daronsn"].ToString();
}
dr.Close();
cmd.ExecuteNonQuery();
conn.Close();

اینم عکسش
128528

ali_md110
دوشنبه 27 بهمن 1393, 14:05 عصر
وسط دستور if
یک حلقه نیاز دارید تا دیتاریدر پیمایش بشه و درون حلقه با توجه به اندیس حلقه رکورد بازیابی کنید



while (dr.Read())
{
// نتیجه اینجا بازیانی کنید و بریزید درون متغیر یا کنترل تکست باکس
string str= (string)dr["daronsn"];

}

hesam_dj10
دوشنبه 27 بهمن 1393, 14:51 عصر
کاری که گفتید کردم نشد
من از دستور MAX توی select استفاده کردم و فقط باید یه عدد بهم بده
حالا من میخام اون عددو بریزم توی تکس باکس
ولی این ارور رو میده
چه کنم

محمد آشتیانی
دوشنبه 27 بهمن 1393, 15:09 عصر
سلام
وقتی کوئری شما یه تک مقدار برمیگردونه کافیه از ExecuteScalar استفاده کنی و نیازی به اینهمه کد نوشتن نیست


conn.Open();
SqlCommand cmd = new SqlCommand("SELECT max(daronsn) FROM moshtarak", conn);
textBox7.Text = Convert.ToString(Cmd.ExecuteScalar());
conn.Close();


* ضمنا لزوم وجود ExecuteNonQuery رو توی کد شما متوجه نشدم (با توجه به این تکه کدی که گذاشتید لزومی نداره ، مگر اینکه استفاده دیگری داشته باشه که بنده کدش رو نمیبینم)


موفق باشید

sajadsobh
دوشنبه 27 بهمن 1393, 15:09 عصر
خب وقتی یه مقدار رو میخوای برگردونه ExecuteScalar رو بعد از تعریف SqlCommand استفاده کن:
con.Open();
textBox7.Text = cmd.ExecuteScalar().ToString();
con.Close();

sajadsobh
دوشنبه 27 بهمن 1393, 15:11 عصر
با تشکر از Mohammad.Ashtiani (http://barnamenevis.org/member.php?12815-Mohammad-Ashtiani)
شرمنده جواب تکراری دادم. صفحه رو refresh نکرده بودم :لبخندساده:

SabaSabouhi
دوشنبه 27 بهمن 1393, 15:15 عصر
کاری که گفتید کردم نشد
من از دستور MAX توی select استفاده کردم و فقط باید یه عدد بهم بده
حالا من میخام اون عددو بریزم توی تکس باکس
ولی این ارور رو میده
چه کنم

سلام
هر کدام از متدها برای کار خاصی ایجاد شده. شما وقتی می‌خواین یک مقدار رو بخونید
بجای DataReader باید از متد ExecuteScalar مربوط به شی SqlCommand استفاده کنی.

صبا صبوحی

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