piroozman
چهارشنبه 12 فروردین 1388, 20:53 عصر
من همیشه برای یافتن کلید(یا هر مشخصه دیگر) یکی از ردیفهای موجود در هر کدام از جداول پروژه از StoredProcedure ها استفاده می کنم. در مثال زیر برای یافتن کلید "بخش یا Part" مورد نظر از همین روش استفاده کرده ام: نام پروسیجر مورد نظر در مثال زیر "Part_IdPart_Return" است.
private byte GetPartId(string partName)
{
byte partId = 0;
using (SqlConnection sqlConnectionObj = Tools.ConnectionProvider())
{
SqlCommand sqlCommandObj = new SqlCommand("Part_IdPart_Return", sqlConnectionObj);
sqlCommandObj.CommandType = CommandType.StoredProcedure;
sqlCommandObj.Parameters.Add(new SqlParameter("@PartName", SqlDbType.NVarChar, 50));
sqlCommandObj.Parameters.Add(new SqlParameter("@IdPart", SqlDbType.TinyInt, 0,
ParameterDirection.Output, false,
0, 0, "@IdPart", DataRowVersion.Current, null));
sqlCommandObj.UpdatedRowSource = UpdateRowSource.OutputParameters;
sqlCommandObj.Parameters["@PartName"].Value = partName;
sqlConnectionObj.Open();
sqlCommandObj.ExecuteNonQuery();
sqlConnectionObj.Close();
partId = Convert.ToByte(sqlCommandObj.Parameters["@IdPart"].Value);
sqlCommandObj.Parameters.Clear();
return partId;
}
}
حال سئوالی که داشتم این است که:
1-آیا استفاده از تعداد زیاد پروسیجر مشکلی در سرعت یا هر چیز دیگری ایجاد می کند یا خیر.
2-در مثال فوق من یک پارامتر بازگشتی با نام "@IdPart"دارم. در پروسیجر مورد نظر این پارامتر از نوع output است. حال اگر بخواهم به جای استفاده از CommandType.StoredProcedure از نوع CommandType.Text استفاده کنم چگونه می توانم همین مقدار بازگشتی را یافته و در پروژه از آن استفاده کنم.
قبلا از دوستانی که در این خصوص بنده رو کمک می کنند بسیار ممنونم.
private byte GetPartId(string partName)
{
byte partId = 0;
using (SqlConnection sqlConnectionObj = Tools.ConnectionProvider())
{
SqlCommand sqlCommandObj = new SqlCommand("Part_IdPart_Return", sqlConnectionObj);
sqlCommandObj.CommandType = CommandType.StoredProcedure;
sqlCommandObj.Parameters.Add(new SqlParameter("@PartName", SqlDbType.NVarChar, 50));
sqlCommandObj.Parameters.Add(new SqlParameter("@IdPart", SqlDbType.TinyInt, 0,
ParameterDirection.Output, false,
0, 0, "@IdPart", DataRowVersion.Current, null));
sqlCommandObj.UpdatedRowSource = UpdateRowSource.OutputParameters;
sqlCommandObj.Parameters["@PartName"].Value = partName;
sqlConnectionObj.Open();
sqlCommandObj.ExecuteNonQuery();
sqlConnectionObj.Close();
partId = Convert.ToByte(sqlCommandObj.Parameters["@IdPart"].Value);
sqlCommandObj.Parameters.Clear();
return partId;
}
}
حال سئوالی که داشتم این است که:
1-آیا استفاده از تعداد زیاد پروسیجر مشکلی در سرعت یا هر چیز دیگری ایجاد می کند یا خیر.
2-در مثال فوق من یک پارامتر بازگشتی با نام "@IdPart"دارم. در پروسیجر مورد نظر این پارامتر از نوع output است. حال اگر بخواهم به جای استفاده از CommandType.StoredProcedure از نوع CommandType.Text استفاده کنم چگونه می توانم همین مقدار بازگشتی را یافته و در پروژه از آن استفاده کنم.
قبلا از دوستانی که در این خصوص بنده رو کمک می کنند بسیار ممنونم.