بستگی به نوع دیتابیستون داره!
مثلا اگه سه تا جدول دارید که یک فیلد مشترک دارن یک متد میتونه برای همشون کار کنه. البته منظور از فیلد مشترک id نیست چون معمولا فیلد id تو همه جدولها هست. مگر اینکه فیلدهای id با هم در ارتباط باشن.
به عنوان مثال من در برنامه خودم دیتابیسی داشتم که دارای 7 جدول بود. یکی از این جدولها جدولی بود برای پسورد برنامه و بقیه یک فیلد مشترک داشتن به نام title
حالا من میخواستم عبارتی رو توی این جدولهایی که فیلد مشترک داشتن جستجو کنم. فقط یک متد نوشتم(البته 2 بار این متد اورلود شده بود چون تعداد فیلدهای جداول یکسان نبود) و خروجی این متد ها استرینگ بود که باید استفاده میکردم.
قسمت مهم آرگومان متد بود که توضیح میدم:
چند تکست باکس و یک دکمه ذخیره و یک کمبو روی فرم بود که باید پس از زدن دکمه، عبارات داخل تکست باکس تو دیتابیس و جدول مربود ذخیره میشد.کمبو هم جدول رو مشخص میکرد.
برای هریک از گزینه های کمبو از متدم استفاده کردم ولی با آرگومانهای مختلف:
DAL dalObj = new DAL();
switch (cmbCat.SelectedIndex.ToString())
{
case "0":
{
string result = dalObj.CheckExist("title","[web]",txt1.Text);
if (result == txt1.Text)
{
Error2();
}
else
{
dalObj.SetCommand4("[web]", txt1.Text, txt2.Text, txt3.Text, txt4.Text);
Message();
}
}
break;
متد CheckExist هم چک میکرد که آیا رکوردی با عنوان مورد نظر وجود داره یا نه.(اینم توی DAL نوشتم)
میبینی که به متد SetCommand4 پنج آرگومان دادم که یکیش نام جدول رو پیدا میکنه و دیگر آرگومانها مقادیر تکستها رو به دستور سلک میده، اینم متد که تو لایه ی DAL نوشتم:
public string CheckExist(string field, string table, string search)
{
OleDbConnection con = f.con;
string checkexist = "SELECT " + field + " FROM " + table + " WHERE " + field + " LIKE '" + search + "'";
string result = "";
OleDbCommand cmd = new OleDbCommand(checkexist, con);
con.Open();
OleDbDataReader dr = cmd.ExecuteReader();
if (dr.Read())
result = dr[field].ToString();
else
result = "";
con.Close();
return result;
}
و
public void SetCommand4(string table, string set1,string set2,string set3,string set4)
{
OleDbConnection con = f.con;
string q = "INSERT INTO " + table + "(title,username,pass,url) VALUES(?,?,?,?)";
OleDbCommand cmd = new OleDbCommand(q, con);
cmd.Parameters.AddWithValue("@title", set1);
cmd.Parameters.AddWithValue("@username", set2);
cmd.Parameters.AddWithValue("@pass", set3);
cmd.Parameters.AddWithValue("@url", set4);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
ببین من یک متد با دو بار اورلود شدن نوشتم و به تعداد جدولها ازش استفاده کردم. درصورتی که اگر مثل شما کد مینوشتم نزدیک به 100 خط به کدهای برنامه ام اضافه میشد.البته متد SetConnection هم اونجا نوشتم.