PDA

View Full Version : سوال: چطور از پارامتر اخذ شده با پروسیجر استفاده کنم؟؟



amir-aa
جمعه 03 شهریور 1391, 14:37 عصر
سلام من توی یک پروسیجر کوری انتخاب یک کد رو نوشتم حالا چجوری بیارمش توی سی شارپ از اون پارامتر استفاده کنم؟؟اسم پارامتر @i هستش

siedmohsen
جمعه 03 شهریور 1391, 15:35 عصر
سلام من اینجا یه نمونه کد گذاشتم!
کاری این کد میکنه در ابتدا یه(SP(Stored procedure به نام List هست که دوتا پارامتر به اون ارسال شده و نتیجه رو در یک datagrid نمایش میده!

SqlConnection objConnection = new SqlConnection(@"Data Source=" + server + ";Initial Catalog=Project;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.Connection = objConnection;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "List_Today_Call";
cmd.Parameters.Add("@nameofvisitor", SqlDbType.NVarChar).Value = comboBox1.Text;
cmd.Parameters.Add("@date", SqlDbType.NVarChar).Value = str;
DataTable dtbl = new DataTable();
objConnection.Open();
dtbl.Load(cmd.ExecuteReader());

objConnection.Close();
grdAuthorTitles.DataSource = dtbl;





با دستور خط آخر اطلاعات رو میزارم تو Data grid در ضمن grdAuthorTitles نام Gridview من هست

amir-aa
شنبه 04 شهریور 1391, 10:03 صبح
من اینو نوشتم اما ارور میده

int a;
a=int.Parse(cmd2.Parameters.Add("@i", SqlDbType.Int).Value.ToString());



اینم ارورش
Object reference not set to an instance of an object.

veniz2008
شنبه 04 شهریور 1391, 10:21 صبح
سلام. شما داخل sp باید یه متغیر i@ تعریف کنی. حالا درون سی شارپ این مقدار رو از تکست باکس میخونی و واسش میفرستی:

cmd.parameters.AddWithValue("@i",ConvertToInt32(textBox1.Text.Trim()));

amir-aa
شنبه 04 شهریور 1391, 10:25 صبح
نه نه نه
من تو پروسیجر مقدار رو گرفتم حالا میخوام مقدار ارسال بشه توی تکست باکس!!

veniz2008
شنبه 04 شهریور 1391, 10:40 صبح
نه نه نه
من تو پروسیجر مقدار رو گرفتم حالا میخوام مقدار ارسال بشه توی تکست باکس!!
خوب یه متغیر درون sp خودتون از نوع خروجی تعریف کنید بصورت زیر( من فرض کردم که یه مقدار int رو میخوای برگشت بدی):

@result int output
حالا این متغیر رو بصورت زیر مقداردهی کنید:

set @result = value
منظور از value مقداری هست که میخوای برگشت بدی.

amir-aa
شنبه 04 شهریور 1391, 10:53 صبح
خب تا اینجا رو بلدم...توی سی شارپ چجوری بنویسم

veniz2008
شنبه 04 شهریور 1391, 11:11 صبح
تو قسمت partial یه متغیر سراسری از نوع int و با نام res تعریف کن. حالا درون کدهای برنامت اینطوری از متغیر خروجیت مقدار رو میگیری:

SqlParameter result = new SqlParameter("@result", res);
result.Direction = ParameterDirection.Output;
cmd.Parameters.Add(result);
con.Open();
cmd.ExecuteReader();
con.Close();
res = int.Parse(result.Value.ToString());
حالا متغیر res شما حاوی مقداری هست که شما از sql براش فرستادید.