مزیت استفاده از store procedure نسبت به query در چیه.
مزیت استفاده از store procedure نسبت به query در چیه.
سلام دوست عزیز !
مزیت ها بسیارند اما از مهم ترین آن ها می توان به موارید زیر اشاره کرد:
1- برای امنیت بیشتر و جلوگیری از عملیاتی همچون sql injection
2- تمرکز لایه دیتا در داخل خود دیتابیس (به طور واضح تر اینکه یک برنامه نویس نباید دقدقه ی چگونگی نوشتن یک query را داشته باشد، و در مواردی که database admin و برنامه نویس یک فرد هستند نیز، بهتر است کار در هر لایه تفکیک شده باشد )
3- تمیزی و وضوح بیشتر کد !
موارد بیشتری نیز می توان نام برد ...
در تکمیلصحبت ایشان اینکه فقط شمایک بار مینویسید و هر زمان نیاز شد فقط از طریق نام اجراش میکنید و هر زمان خاستید تغییر کوچیکی بدین لازم نیست تمام Quary هایی که نوشتی دوباره بگردی و پیدا کنی فقط با تغییر در Storeprocedure سریع تر انجام میشه
با سلام، در تکمیل صحبت دوستان، زمانی که شما یک store procedure مینویسید اون store procedure توی حافظه بانک کش میشه و این سرعت اجرای برنامه بالا میبره، از طرفی شما کد هاتونو دیگه توی خود فرمتون نمینویسید و این امنیت رو بالا میبره، چون دیگه کسی به اون کدها دسترسی نداره، ضمنا ترافیک شبکه هم کاهش پیدا میکنه
سلام:
کل دوستان موارد رو گفتن فقط من یکجا مرتب میکنم:
1- یک Stored Producer یکبار کامپایل میشود و پردازش میشود و برای همیشه مستقیما جهت بهره برداری آماده است. در صورتیکه دستورات نوشته شده در صفحات ابتدا باید پردازش شوند بعد مورد استفاده قرار بگیرند.
2- خطرات جانبی همانند حملات SQL Ejection به صفر میرسد.
3- تمرکز لایه دیتا در خود دیتابیس که مهمترین مزیتش یکجا بودن تمامی پرس و جوها بوده و اگر نیاز باشه بعدها یک پرس و جویی اصلاح بشه نیاز نیست توی تمامی صفحات دنبالش بگردی.
4- از نوشتن پرس و جوهای تکراری راحت میشین. یک نمونه ش عدم وجود نام کاربری از قبل در پایگاه داده ست که ممکنه چند جا نیاز به بررسی این مورد باشه که در صورت استفاده از پروسیجرها نیازی نیست چند پرس و جو رو تکراری نوشت.
5- کاهش حجم کدنویسی در صفحات .
6- کاهش ترافیک شبکه که به دلیل حجم انتقالی پرس و جوها میتونه زیاد باشه.
و کلی مزایای دیگر ...
موفق باشید
سلام به دوستان حال بگوید چگونه و کجا querry های (insert,delete,update,search) مربوطه به sql تایپ کنم و استفاده کنم و در C# چگونه می توانم این تاوبع را فراخوانی کنم و از این توابع در برنامه ام استفاده کنم
لطفا مراحل کار یا یک نمونه کار کوچک بگذارید تا استفاده کنیم
با تشکر
دوست عزیز منظورت اینه کخ می خوا update,delet , ... رو تو SP ذخیره کنی؟
دوست عزیز من یک کلاس در C# تعریف کردم و توابع مربوطه (insert,delete,update,search)
در کلاس تعریف کردم و در داخل برنامه ام دارم از این توابع استفاده میکنم اما چند تا از دوستان گفتند که بهتر این توابع را داخل store procedure بنویسی به دلیل مواردی که دوستان در همین تایپیک اعلام کردند
حال می خواستم ببینم که این توابع را کجا و چطور باید بنویسم و در C# چگونه این توابع را فراخوانی کنم و در برنامه ام از این تواع استفاده کنم
کمک کنید راهنمایی می خواهم
اگر می تونید نمونه برنامه بگذارید
با تشکر
شما Store Procedure هارو باید در Sql Server تعریف کنی و در C# پارامترها رو بهش پاس بدی
http://msdn.microsoft.com/en-us/libr...9(SQL.80).aspx
http://www.developerfusion.com/artic...-sql-server/3/
http://www.codeproject.com/KB/cs/simplecodeasp.aspx
لطفا می شه بیشتر راهنمایی کنید چون اصلا در این زمینه کار نکردم
دوست عزیز اصلا" شما این لینک هارو دیدی؟
دوست عزیز لینک ها را دیدم نمی دونم کجای sqlserver باید دستورات تایپ شوند ، گفتم که من در این زمینه اصلا کار نکردم یک کمی بیشتر راهنمایی کنید اگر ممکنه
برای ایجاد stored procedure در sql server
your DataBase---> Programmability -----> stored procedure
روی پوشه stored procedure راست کلیک کرده و new stored procedure را بزنید و کد خود را تایپ کنید
سلام
در تکمیل حرفهای دوستان
فرض کنید برنامه شما چند کاربره باشه و امکان داشته باشه که چند کاربر همزمان از یه دیتابیس روی سرورتون استفاده کنند . حالا اگه دوتا شون بخوان همزمان یه رکورد رو ویرایش کنند چه اتفاقی می افته .؟
sp این مشکل رو بر طرف کرده و اگر کاربر a شروع به ویرایش یه رکورد کرد دیتابیس رو تا تموم شدن عملیات ویرایش کاربر اول lock می کنه تا اون عملیات با عملیات دوم برخورد نداشته باشه .
البته منظور از عملیات و loc کردن شاید در حد میکرو ثانیه باشه .
موفق باشید .
سلام به دوستان بلاخره با تلاش کردن توانستم یک storedproceduer بسازم و تابع insert درون نوشتم و در C# فرخوانی و تست کردم جواب هم رگفتم حال می خواهم ببینم آیا می تونم دستورات دیگر sql (update,select,delete( را درون همین storedproceduer بنویسم اگر ممکنه توضیح بدهید
آره. به مثال زیر توجه کن:
Create Procedure sp_Country_SelectAll
As
Begin
Select
[Id],
[CountryName]
From Country
End
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
GO
Create Procedure sp_Country_SelectRow
@Id int
As
Begin
Select
[Id],
[CountryName]
From Country
Where
[Id] = @Id
End
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
GO
Create Procedure sp_Country_Insert
@CountryName nvarchar(100)
As
Begin
Insert Into Country
([CountryName])
Values
(@CountryName)
Declare @ReferenceID int
Select @ReferenceID = @@IDENTITY
Return @ReferenceID
End
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
GO
Create Procedure sp_Country_Update
@Id int,
@CountryName nvarchar(100)
As
Begin
Update Country
Set
[CountryName] = @CountryName
Where
[Id] = @Id
End
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
GO
Create Procedure sp_Country_DeleteRow
@Id int
As
Begin
Delete Country
Where
[Id] = @Id
End
GO
با سلام دوست عزیز واقعا راهنمایی خوبی بود حالا می تونی به من بگی که چطور از این storedproceduer در C# استفاده کنم یعنی چگونه به این توابع مقادیرم را بفرستم
با تشکر
از دوستان کسی نیست یک راهنمایی کوچولوی دیگه بکنه
سلام
cmd.Connection = cnn;
cmd.CommandText = @"spName";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MyVar", SqlDbType.Int).Value =1;
cmd.ExecuteNonQuery();
سوالی بود مطرح کنید .
موفق باشید .
سلام دوست عزیز که من راهنمایی می کنید می خواست ببینم من یک عدد storedproceduer در database تعریف کردم حال داخل این storedproceduer ،
update,select,delete,insert قرار دادم حال چگونهاین توابع را داخل C# صدا بزنم
cmd.CommandText = @"spName";
نام storedproceduer وارد کردم
حال می خواهم تابع update استفاده کنم یا مثلا delete را استفاده کنم چگونه محیط C#
تشخیص میده که من از کدام تابع درون storedproceduer می خواهم استفاده کنم آیا در محیط C# نایزی هست به غیر از نام storedproceduer نام تابع مورد نظر را هم وارد کنم
بگویید لطفا چگونه؟
هر sp رو باید برای یه منظور خاص بنویسید . وقتی یه sp میشه کلش اجرا میشه ، نه فقط قسمت update یا ه فقط قسمت insert .
من یک عدد storedproceduer در database تعریف کردم حال داخل این storedproceduer ،
update,select,delete,insert قرار دادم حال چگونهاین توابع را داخل C# صدا بزنم
شما باسد برای هر کارتون (insert یا delete ) استور جداگونه بنویسید .
منظورتون از تابع چی هست اگر function توی sql هست که باید
cmd.CommandText = @FunctionName";
cmd.CommandType = CommandType.Text;
سوالی بود مطرح کنید .
موفق باشید .