PDA

View Full Version : نوشتن متدی برای پارامترها



kahkeshane2012
شنبه 16 آذر 1392, 11:02 صبح
دوستان سلام. من یه کلاسی نوشتم که داری یه سری متد به شکل زیر هست حالا میخوام یه متد برای دریافت پارامترها بنویسم توسط Addwithvalue اما از اونجای که تعداد پارامترها مشخص نیست که چند تا باشه نمیدونم باید چکار کنم واضح تر بخوام بگم مثلا من یه تابع درج دارم که سه تا پارامتر درج میکنم اما یکی دیگه دارم که 5 تا درج میکنه. کمی سردر گمم. ممنون میشم یکی راهنماییم کنه.
با تشکر.

public class ConnectDB
{
SqlConnection con;
SqlCommand cmd;
SqlDataAdapter da;

public ConnectDB()
{
con = new SqlConnection();
cmd = new SqlCommand();
da = new SqlDataAdapter();
cmd.Connection = con;
da.SelectCommand = cmd;
}
public void connect()
{
string strcon = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Leil aShoja\Documents\Visual Studio 2008\Projects\Test\Test\bin\Debug\Recpection.mdf;I ntegrated Security=True;Connect Timeout=30;User Instance=True";
con.ConnectionString = strcon;
con.Open();
}
public void command(string command)
{
cmd.CommandText = command;
cmd.ExecuteNonQuery();
con.Close();
}

}

cpppro
شنبه 16 آذر 1392, 13:41 عصر
http://s5.picofile.com/file/8102864742/code111.png

kahkeshane2012
شنبه 16 آذر 1392, 16:29 عصر
مرسی از پاسختون. حقیقتش من دارم از معماری چندلایه ای استفاده میکنم برای رفع مشکلم این کارا کردم اما میدونم روش درستی نیست میخوام که یه متد تعریف کنم فقط مختص پارامترها ؛ایده ی ارایه ایده ی خوبی هست اما نمیدونم میشه ازش استفاده کرد یانه .....
اگر که بلدید و راهنمایی بکنید ممنون میشم.


public void updateTeacher(string name, string phone, string tahsilat)
{
objcondb.connect();
objcondb.command("exec pro_updateTeacher @name_teacher,@phone,@tahsilat");
objcondb.cmd.Parameters.AddWithValue("@name_Teacher", name);
objcondb.cmd.Parameters.AddWithValue("@phone", phone);
objcondb.cmd.Parameters.AddWithValue("@tahsilat", tahsilat);
objcondb.disconnect();
}

درواقع تابع رو طبق فرمایش شما نوشتم اما نمیدونم موقعه ی فراخوانی چطور باید استفاده کنم؟!؟!؟ قسمتی که نقطه چین گذاشتم برام مجهول هست :(


public void command(string command,string[] columnsName,string[] values)
{
cmd.CommandText = command;
string param = "@";
for (int i = 0; i < values.Length; i++)
{
cmd.Parameters.AddWithValue(param + columnsName[i], values[i]);
}
}


// objcondb.command("exec pro_updateTeacher @name_teacher,@phone,@tahsilat",......);

cpppro
شنبه 16 آذر 1392, 17:33 عصر
براتون فرستادم.

علی متقی پور
شنبه 16 آذر 1392, 21:11 عصر
با سلام

برای حل این مساله راه حل ساده ای وجود داره. شما وقتی متدتون رو تعریف میکنید قبل از پارامت ورودی که بشکل آرایه ای از اون جنس هست کلمه کلیدی param رو بذارید . در این حالت هر تعدادی پارامتری که به متغیر پاس داده بشه بطور خودکار در این آرایه قرار میگیره. فقط دقت داشته باشید که این ارایه باید آخرین پارامتر ورودی متد باشه

kahkeshane2012
یک شنبه 17 آذر 1392, 14:08 عصر
مرسی مشکل حل شد.