PDA

View Full Version : دسترسی به مقدار بازگشتی از sql



hanis29268
سه شنبه 02 مهر 1392, 11:01 صبح
با سلام
بنده این قطعه کد رو نوشتم،درست هم جواب میده،ولی نمیدونم چطور به مقداری که برای من برمیگردونه دسترسی داشته باشم.
SqlDataReader dReader;
SqlConnection conn = new SqlConnection(@"Data Source=.\sql2008;Initial Catalog=jelvehsadb;Integrated Security=True;");
SqlCommand comm = new SqlCommand();
comm.Connection = conn;

comm.CommandText = @"Select response from work_with_us where national_code =@CustomerID";
comm.Parameters.AddWithValue("CustomerID", 00488);
comm.Connection.Open();


dReader = comm.ExecuteReader();

if (dReader.HasRows == true)
{
TxtShow.Text = ؟؟؟؟؟;
}


به جای علامت سوال باید چی بنویسم؟؟؟؟

mehdi.mousavi
سه شنبه 02 مهر 1392, 11:12 صبح
سلام.
از اونجاییکه دستور SELECT شما، فقط response متعلق به یک Unique Customer رو برمیگردونه (یعنی یک Row حاوی یک Column)
می تونید از ExecuteScalar جای ExecuteReader استفاده کنید تا مقدار response رو بصورت مستقیم بگیرید.

موفق باشید.

hanis29268
سه شنبه 02 مهر 1392, 11:26 صبح
چطور میتونم مقدار رو مستقیم بگیرم؟؟؟
ممنون

hamid_hr
سه شنبه 02 مهر 1392, 11:34 صبح
if (dReader.read())
{
TxtShow.Text = dReader[0].toString();
}
dReader.close();

اينطوري تغييرش بده

mehdi.mousavi
سه شنبه 02 مهر 1392, 11:37 صبح
چطور میتونم مقدار رو مستقیم بگیرم؟؟؟
ممنون

عرض کردم، comm.ExecuteScalar به شما یک object برمیگردونه. بعد اونو با استفاده از کلاس Convert به تایپ مورد نظر Convert کنید و تمام. فرضا اگر response رو int فرض کنم:

object resp = comm.ExecuteScalar();
if(resp != null && resp != DBNull.Value) {
int returnValue = Convert.ToInt32(resp);
}

موفق باشید.

Originalgriff
سه شنبه 02 مهر 1392, 11:41 صبح
سلام دوست عزیز،
راه حل هایی که دوستان گفتن درست هستش ولی با توجه به قطعه کدتون من این رو پیشنهاد میکنم،خیلی راحته.
dReader = comm.ExecuteReader();
dReader.Read();
if (dReader.HasRows == true)
{
TxtShow.Text = (string)dReader["response"];
}

موفق باشید.

hanis29268
سه شنبه 02 مهر 1392, 11:47 صبح
ممنون
به جواب رسیدم.
باید dreader.open رو می نوشتم.