PDA

View Full Version : ADO.NET - Stored Procedures



raznahan
چهارشنبه 16 مرداد 1387, 18:53 عصر
با سلام به همه دوستان

من میخوام یه متد کلی داشته باشم (با استفاده از مفهوم پلیمورفیسم) که بتونم با اون SP هایی که ورودی دارند رو صدا بزنم ، یعنی برای هر SP یه متد جدا نداشته باشم ، فقط بر حسب تعداد ورودی که یه sp داره ، اورلودهای مختلف رو صدا بزنم . چطوری میتونم این کار رو انجام بدم ؟

مثل اینکه وقتی میخوای یه پارامتر رو به Command ، اضافه کنی حتما باید اسم پارامتر ورودی با اسم پارامتر در SP یکی باشه :متفکر: اینطوری برای هر SP باید یه متد جدا داشته باشیم .

لطفا راهنمایی کنید .


با تشکر.

mostafa_sgh
چهارشنبه 16 مرداد 1387, 21:41 عصر
سلام دوست عزیز

شما برای این کار میتونی از NameValueCollection استفاده کنی . البته من خودم برای کارهام اینو نوشتم .

امید وارم به دردتون بخوره ...



internal static DataTable GetSPData(string spName, NameValueCollection sp_parameters)
{
DataTable sp_dt = newDataTable();
try
{
SqlDataAdapter sp_da;
SqlConnection sp_conn = newSqlConnection(strCon);
SqlCommand sp_comm = new SqlCommand();
sp_comm.CommandType = CommandType.StoredProcedure;
sp_comm.Connection = sp_conn;
sp_comm.CommandText = spName;

if (sp_parameters != null)
{
for (int i = 0; i < sp_parameters.Count; i++)
{
string paramName = sp_parameters.GetKey(i);
string paramValue = sp_parameters[i];
sp_comm.Parameters.AddWithValue(paramName, paramValue);
}
}
sp_da = newSqlDataAdapter(sp_comm);
sp_da.Fill(sp_dt);
}
catch
{
sp_dt = null;
}
return sp_dt;
}



برای استفاده از این متود هم از این کد استفاده کن :





NameValueCollection nv = new NameValueCollection();
nv.Add("UserID",user);


*** اضافه کن .... nv هر پارامتری داری به

*** رشته اول نام پارامتر و رشته دوم مقدار پارامتر می باشد.


DataTable dt = GetSPData("procedureName", nv);

raznahan
چهارشنبه 16 مرداد 1387, 23:39 عصر
خیلی ممنون راه حل خوبیه

مشکلم حل شد .

با تشکر:چشمک: