PDA

View Full Version : سوال: برگرداندن مقداری که در procedure به دست میاد به C#



erfan_urchin
دوشنبه 26 فروردین 1392, 22:29 عصر
دوستان من یه procedure درست کردم با کد زیر
create proc p1(@n int)
as
select tc.name from tc where tc.id=@n
مثلا فرض کنید من عدد 101 رو بهش میدم یعنی: exec p1 101
و باید با این کد "علی" رو نمایش بده
حالا من میخوام تو سی شارپ نتیجه این exec رو بریزم تو یک string ، تا بتونم ازش استفاده کنم
حالا نمیدونم شاید باید به جای procedure از function استفده کنم:متفکر:
لطفا راهنماییم کنید چیکار کنم؟؟؟

veniz2008
دوشنبه 26 فروردین 1392, 22:38 عصر
سلام.
برنامه شما یه پارامتر ورودی داره که همون id شخص هست و میخواید یه خروجی که نام شخص مورد نظر هست رو برگشت بدید.
درست متوجه شدم؟

erfan_urchin
دوشنبه 26 فروردین 1392, 22:39 عصر
بله دقیقا همینو میخوام
میخوام اون اسم شخص رو بریزم تو یک متغیر string تا بتونم ازش استفاده کنم

veniz2008
دوشنبه 26 فروردین 1392, 23:10 عصر
خوب چرا خیلی راحت مقدار نام رو به اینصورت برگشت نمیدید:


create proc SearchName
@id int
as
select name from tc where id = @id
go

داخل سی شارپ هم به اینصورت ازش استفاده کنید :

SqlDataAdapter da = new SqlDataAdapter("SearchName", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddWithValue("@id", TxtID.Text.Trim());
DataTable dt = new DataTable();
da.Fill(dt);
MessageBox.Show(dt.Rows[0][0].ToString());

plus
دوشنبه 26 فروردین 1392, 23:41 عصر
اگه فقط "یک" مقدار برمیگردونید، نیازی به استفاده از DataTable و DataAdapter نیست، میتونید SqlCommand رو ExecuteScalar کنید:

string result = string.Empty;
string cnnString = "data source=ORGANIZA-258C63\\SQLEXPRESS;Integrated Security=True; database=SampleDatabase";
using (SqlConnection cnn = new SqlConnection(cnnString))
{
cnn.Open();
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = "p1";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@n", 10));
result = (string)cmd.ExecuteScalar();
cnn.Close();
}
MessageBox.Show(result);

erfan_urchin
سه شنبه 27 فروردین 1392, 00:05 صبح
واقعا ممنونم ازتون
خیلی کمکم کردین