PDA

View Full Version : CommandType.StoredProcedure یا CommandType.Text



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 استفاده کنم چگونه می توانم همین مقدار بازگشتی را یافته و در پروژه از آن استفاده کنم.
قبلا از دوستانی که در این خصوص بنده رو کمک می کنند بسیار ممنونم.

salehbagheri
چهارشنبه 12 فروردین 1388, 22:56 عصر
1-آیا استفاده از تعداد زیاد پروسیجر مشکلی در سرعت یا هر چیز دیگری ایجاد می کند یا خیر.

طبق مطالبي كه خودم خوندم استفاده از پروسيجرها نه تنها سرعت رو كم نمي كنه بلكه باعث افزايش سرعت و كارايي ميشه! اما اگر منظورتون تعداد پروسيجرها باشه خوب مسلّمه كه هر چيزي تو برنامه نويسي زياد بشه باعث كاهش سرعت ميشه!!!

در مورد سوال دوم هم ميتونم بگم كه كدهاي استفاده شده در پروسيجر رو به جاي "Part_IdPart_Return" بنويسيد!


SqlCommand sqlCommandObj = new SqlCommand("Part_IdPart_Return", sqlConnectionObj);