PDA

View Full Version : سوال: درخواست راهنمایی برای اجرای SQL Query در سی شارپ



012132
پنج شنبه 25 اردیبهشت 1393, 23:22 عصر
سلام . من توی دیتابیسم تو SQL Server یک سری کوئری و پروسیجر نوشتم . می خواستم بدونم چطور باید توی سی شارپ ازش استفاده کنم ؟ باید از دیتاست استفاده کنم ؟
لطفاً راهنماییم کنید . ممنون

khokhan
پنج شنبه 25 اردیبهشت 1393, 23:38 عصر
سلام . من توی دیتابیسم تو SQL Server یک سری کوئری و پروسیجر نوشتم . می خواستم بدونم چطور باید توی سی شارپ ازش استفاده کنم ؟ باید از دیتاست استفاده کنم ؟
لطفاً راهنماییم کنید . ممنون



Stored Procedureچیست ؟



Stored Procedure یا Sp یا به زبان فارسی " رویه های ذخیره شده " اشیایی اجرا پذیر در بانک اطلاعاتیSQL Server هستند که شامل یک یا چندین دستور SQL می شود ، این رویه ها میتوانند پارامتر های ورودی و خروجی داشته باشند .
همچنین میتوان داخل این رویه ها به زبان SQL برنامه نویسی کرد .
مهم ترین کاربر این رویه ها ذخیره کردن دستورات Select , Insert , Update , Delete هست یا ترکیبی از اینها .
نحوه ساخت این رویه ها به صورت زیر می باشد :



[*=right]وارد بانک اطلاعاتی SQL Server شده ، پس از باز کردن بانک مورد نظر در قسمت Programmability وارد بخش Stored Procedure شوید .
[*=right]بر روی Stored Procedure کلیک راست کرده و New Stored Procedure را انتخاب نمایید .
[*=right]احتمالا کد های پیشفرضی را در این صفحه مشاهده می کنید ، همه این کد هارا پا کرده و به صورت زیر کد نویسی کنید :



Create Procedure YourProcedureName(@FirstParamete DataType,@SecondParameter DataType,...)

As

Begin

SQLStatement

End




د فوق شکل کلی ساخت رویه های ذخیره شده می باشد .

به جای YourProcedureName یک نام برای برای رویه انتخاب کنید . سعی کنید نامی که انتخاب می نمایید مفهوم رویه شما را برساند مثلا برای درج یک رکورد جدید در جدول Members من نام AddNewMember را انتخاب می کنم و یا برای دریافت تمام رکورد های این جدول نام GetAllMembers نام با مفهومی است .

در پرانتز مقابل نام رویه پارامتر های رویه به همراه نوع پارامتر تعیین میشود ، اگر تعداد پارامتر ها بیشتر از یکی بود با ویرگول آنها را جدا می کنیم .

به جای SQLStatement دستورات SQl را که بین Begin و End نوشته می شوند تایپ کنید .

دستوراتی مانند Select , Insert , Update , Delete و....

به عنوان مثال Sp زیر اطلاعات کاربر را با دریافت پارامتر نام کاربری ( ( @IDاز جدول TBL_Members دریافت می کند :





create procedure GetMemberbyID(@ID nvarchar(100))

as

begin


select * from TBL_Members where ID=@ID


end


سپس بر روی دکمه Execute کلیک کرده تا رویه شما ساخته و ذخیره گردد .


برخی از قابلیت های رویه های ذخیره شده یا Stored Procedure عبارت است از :


[*=right]Precompiled بودن آنها به این معنی که به زبان ماشین بسیار نزدیک شده و به طور کامل از اول ترجمه نمیشود ، این امر باعث افزایش سرعت بارگزاری می گردد .
[*=right]قابلیت ذخیره داشته و میتوان از یک رویه چندین بار در کد نویسی استفاده کرد .
[*=right]دارای ویرایشگر Query می باشد (میتوانید به سادگی یک Query حرفه ای ایجاد کنید)
[*=right]دارای Syntax Parser هست و از خطاهای SQL جلوگیری می کند .
[*=right]دارای امنیت بالایی است و از هک شدن سایت شما توسط SQL Injection در بسیاری موارد جلوگیری می کند .
[*=right]قابلیت درج چندین دستور SQL را پشت سرهم داراست .
[*=right]قابلیت ارسال ورودی و خروجی دارد .
[*=right]قابلیت برنامه نویسی ( شرط ، حلقه و...) به زبان TransactSQL دارد .


و.....


حال که با قابلیت ها ونحوه ساخت Stored Procedure آشنا شدید بد نیست که به نحوه استفاده از این ابزار جالب در Asp.NET بپردازیم .

استفاده از این ابزار بسیار ساده هست . اگر از SQL Datasource یا ObjectDatasource استفاده می کنید یک ویزارد برای ساخت و استفاده از Stored Procedure ها قرار داده شده که به راحتی آن را مدیریت کنید .

اگر از کد نویسی برای کار با بانک های اطلاعاتی استفاده می کنید کافیه بعد از تعریف SQLCommand به جای دستورات SQL نام SP را وارد نموده و بعد از آن کد زیر را اضافه نمایید :





Cmd.CommandType = CommandType.StoredProcedure;


این کد به برنامه می گوید که دستورات نوشته شده از نوع Stored Procedure هستند و نیازی به ترجمه آن ها نیست .

در نهایت کد های اتصال ما به شکل زیر خواهد بود :




SqlConnection Con=new SqlConnection("YourConnectionString");

SqlCommand Cmd = new SqlCommand("YourProcedureName", Con);



Cmd.CommandType = CommandType.StoredProcedure;



Con.Open();



// Some Code...



Con.Close();



برای ارسال پارامتر هم به صورت زیر عمل می کنیم :




SqlConnection Con = new SqlConnection("YourConnectionString");

SqlCommand Cmd = new SqlCommand("YourProcedureName", Con);



Cmd.CommandType = CommandType.StoredProcedure;

Cmd.Parameters.AddWithValue("@FirstParam", Textbox1.Text);
Cmd.Parameters.AddWithValue("@SecondParam", Textbox2.Text);

Con.Open();



// Some Code...



Con.Close();