آموزش برنامه نويسي سي شارپ

سلام با آموزش برنامه نویسی سی شارپ قسمت دهم در خدمت شما عزیزان هستیم, در قسمت قبلی با ADO.NET در زبان C# آشنا شدیم. با ادامه آموزش سی شارپ همراه ما باشید.لينك قسمت اول : آموزش #Cاتصال به SQL Server در سی شارپ:برای ارتباط با هر پایگاه داده و انجام هر گونه عملیاتی لازم است تا به آن پایگاه داده وصل شویم. در ADO.NET جهت اتصال به پایگاه داده SQL Server از شی SqlConnection استفاده می شود. در این قسمت از آموزش سی شارپ به بررسی این شی و روش کار با آن خواهیم پرداخت.این درس به توصیف SqlConnection Object و چگونگی اتصال به پایگاه داده می پردازد. اهداف این بخش به شرح زیر استاز کدامیک از شی های اتصال (Connection Object) استفاده می شود.چگونه یک SqlConnection Object را معرفی کنیم.چگونه SqlConnection Object در اپلیکیشن کار می کند.درک اهمیتِ مدیریتِ اتصالِ موثرِ دایمی (lifetime). https://www.aparat.com/v/ZtT6l مقدمهاولین اقدامی که به هنگام ارتباط با یک پایگاه داده باید انجام داد، ایجاد اتصال (Connection)است. این اتصال (Connection)به بقیه ی ADO.NET اعلان می کند که در حال تعامل با کدام پایگاه داده می باشد. این اتصال (Connection) ، همه ی منطق های سطح پایین و مرتبط با پروتکل پایگاه داده های ویژه (specific database protocols) را مدیریت می نماید. این امر موجب سهولت در انجام کارها می شود، چرا که بیشترین کاری که در یک کد باید انجام داد عبارت است از نمونه سازی شی اتصال(connection object) ، باز کردن اتصال(Connection) ، و بستن اتصال (Connection) در پایان کار. گاهی اوقات و بسته به شرایط خاص، ممکن است نیازی به انجام بیشتر این کارها هم نباشد.با وجود اینکه کار با اتصال ها (Connections)در ADO.NET بسیار راحت است، اما به دلیل اهمیت اتخاذِ تصمیماتِ صحیح در زمان کدگذاریِ روتینِ دستیابیِ داده ها(data access routines)، نیاز است که این اتصال ها (Connections) را فرا گرفت. موقعیتی را در نظر بگیرید که در آن در حال استفاده از یک اپلیکیشن تک کاربری (stand-alone client) هستید که بر روی یک پایگاه داده مجزا کار می کند. به طور حتم توجه زیادی به این موقعیت نخواهید داشت. حال نرم افزار یک سازمان را در نظر بگیرید که در آن صدها کاربر از سرتاسرِ شرکت در حال دستیابی به یک پایگاه داده یکسان می باشند. هر اتصال (Connection)بیانگر یک بار اضافه می باشد و تنها میزانِ محدودی از این بار اضافه می تواند وجود داشته باشد. در موقعیت های بزرگتر، وب سایتی را در نظر بگیرید که روزانه صدها هزار کاربر دارد. اپلیکیشن هایی که اتصال (Connection) را در دست می گیرند و اجازه نمی دهند این اتصال ها (Connections) آزاد شوند، می توانند تاثیراتی به شدت منفی بر روی عملکرد و گسترش(scalability) داشته باشند.ایجاد یک SqlConnection Objectیک SqlConnection Object مثل هر شی C# دیگری، یک شی می باشد. بیشتر اوقات، تمامی SqlConnection ها، آنطور که در کد زیر نشان داده شده است، تماما در یک خط نمونه سازی و معرفی می شوند:SqlConnection conn = new SqlConnection(&quotData Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI&quot);در SqlConnection Object که بالا نشان داده شده است، از سازنده ای (Constructor) استفاده می کند که تنها دارای یک آرگومان رشته ای می باشد. این آرگومان، یک Connection String یا رشته ی اتصال نامیده می شود. جدول 1 بخش های یک Connection String را توصیف می کند.جدول 1. رشته های اتصالِ ADO.NET شامل جفت های کلیدی/مقداری(key/value pairs) برای مشخص کردن چگونگی ایجاد یک اتصال پایگاه دادهی. این مقادیر شاملِ مکان، نام پایگاه داده، و اطلاعات کاربری می باشند.جدول 1 امنیت یکپارچه (Integrated Security) حالت امنیتی است که به هنگام کار کردن با یک دستگاه مجزا وجود دارد. با این حال، در بیشتر مواقع با مجوزهایی که به طور ویژه برای اپلیکیشن های مورد استفاده اختصاص داده شده اند، می توان بر اساس یک SQL Server User ID امنیت را به طور خاص تعیین نمود. شکل پایین یک رشته ی اتصال (Connection String) را با استفاده از پارامترهای User ID و Password، نشان می دهد.SqlConnection conn = new SqlConnection(&quotData Source=DatabaseServer;Initial Catalog=Northwind;User ID=YourUserID;Password=YourPassword&quot);توجه داشته باشید که چگونه Data Source، به منظور تعیین یک پایگاه داده در دستگاهی دیگر، و یا در یک LAN و اینترنت، با DatabaseServer تنظیم شده است. ضمن آنکه User ID و Password جایگزین پارامتر امنیت یکپارچه (Integrated Security) می شوند. https://www.aparat.com/v/s6AOp استفاده از یک SqlConnectionهدف ایجادِ یک SqlConnection object این است که بتوان دیگر کدهای ADO.NET را برای کار با یک پایگاه داده، فعال سازید. SqlCommand و SqlDataAdapter، شی اتصال (Connection Object) را بعنوان یک پارامتر در نظر می گیرند. توالی عملیاتی که در طول عمر یک SqlConnection اتفاق می افتند به صورت زیر است:آرایه ی SqlConnectionباز کردن اتصال(Connection)انتقال اتصال (Connection)به شی ADO.NET دیگراجرای عملیات پایگاه داده با دیگر شی های ADO.NETبستن اتصال (Connection)تاکنون دیدیم که یک SqlConnection چگونه معرفی می گردد. بقیه ی مراحل شامل باز کردن (Opening) ، پاس دادن یا انتقال (Passing)، استفاده کردن (Using) و بستن (Closing)در لیست دستور 1 ذکر شده اند.using System;using System.Data;using System.Data.SqlClient;/// <summary>/// Demonstrates how to work with SqlConnection objects/// </summary>class SqlConnectionDemo{ static void Main() { // 1. Instantiate the connection SqlConnection conn = new SqlConnection(&quotData Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI&quot); SqlDataReader rdr = null; try { // 2. Open the connection conn.Open(); // 3. Pass the connection to a command object SqlCommand cmd = new SqlCommand(&quotselect * from Customers&quot, conn); // 4. Use the connection // get query results rdr = cmd.ExecuteReader(); // print the CustomerID of each record while (rdr.Read()) { Console.WriteLine(rdr[0]); } } finally { // close the reader if (rdr != null) { rdr.Close(); } // 5. Close the connection if (conn != null) { conn.Close(); } } }}همانطور که در لیست 1 نشان داده شده است، با استفاده از متدِ Open() در شی SqlConnection (که conn نامیده می شود)، اتصال (Connection)باز می شود. هرگونه عملیات بر روی اتصالی که هنوز باز نشده است، موجب خطا (exception) می شود. بنابراین پیش از استفاده باید اتصال (Connection) را به طور واقعی با فراخوانی متد Open() برقرار نمایید.قبل از استفاده از یک SqlCommand، باید به کدِ ADO.NET اعلان شود که به کدام نوع اتصال (Connection) نیاز دارد. در لیست دستور 1 دومین پارامتر را به وسیله شی SqlConnection (که با conn مشخص می شود)، برای شی SqlCommand مقداردهی نمودیم. بنابراین، هرگونه عملیاتی که با SqlConnection اجرا می شود، از آن اتصال (Connection)استفاده خواهد نمود. کدی که از اتصال (Connection)استفاده می کند یک شی SqlConnection می باشد که یک Query را بر روی جدول Customer اجرا می کند. مقادیرِ نتایج به عنوان یک SqlDataReader برگردانده می شوند و حلقه ی while اولین ستون از هر سطر این مقادیر، که ستونِ CustomerID است، را می خواند. در درس های بعدی SqlCommand و شی SqlDataReader را مورد بررسی قرار خواهیم داد. شایان ذکر است که این اشیا در حال استفاده از شی SqlConnection می باشند، بنابراین می دانند که با کدام پایگاه داده ها در تعامل باشند.پس از پایانِ کار با Connection Object، باید اتصال (connection)را ببندید. عدم انجام این کار می تواند منجر به پیامدهای جدی بر روی اجرا (Performance)و مقیاس پذیری (Scalability) برنامه شما شود. نکته ای که در مورد چگونگی بستن اتصال (Connection) در لیست دستورِ 1 وجود دارد این است که متد Close() در قطعه کدِ finally فراخوانی می شود و این اطمینان حاصل می آید که اتصال (Connection)قبل از بستن آن به هیچ وجه null نمی باشد.در نظر داشته باشید که ADO.NET در یک قطعه کدِ try/catch/finally نگه داشته می شود. قطعه کدهای finally، بدون در نظر گرفتن این که آیا یک خطا (exception) رخ داده است یا خیر، تضمین خواهند کرد که بخش مشخصی از کد اجرا خواهد شد. از آنجایی که اتصال ها (Connection) منابع زیادی مصرف می کنند، باید مطمئن شد که در قطعه کدهای finally بسته شوند.دیگر اقدام مهم که در هنگام بستن اتصال (Connection)باید مدنظر داشت این است که مطمئن شد شی اتصال (Connection Object) در حالت بی مقدار (null) قرار ندارد. اگر به هنگام نمونه سازیِ اتصال (Connection) خطایی رخ دهد، آن اتصال (Connection) بی مقدار (null) خواهد شد. این مثال نشان می دهد که چگونه از یک SqlConnection به همراه یک SqlDataReader که صراحتا نیازمند بستن اتصال (Connection)است استفاده شود. با این حال، زمانی که از مدل disconnected data استفاده می شود، نیازی نیست که خودتان اتصال را برقرار یا قطع نمایید. در درس آینده که نگاهی به SqlDataReader دارد، خواهیم دید که این موضوع چگونه پیش می رود.خلاصهاشیای SqlConnection به دیگر کدهای ADO.NET اعلان می کنند که به کدامیک از پایگاه داده ها متصل شده و چگونه یک اتصال (Connection)را برقرار نمایند. آنها به وسیله ی پاس دادنِ یک رشته اتصال (Connection String)با مقادیری از جفت های کلیدی/مقداری (key/value pairs) که اتصال (Connection)را تعریف می کنند، نمونه سازی می شوند. مراحلی که شما با استفاده از آنها طول عمر یک اتصال (Connection)را تعیین می کنید عبارتند از create، open، pass، use، و close. حصولِ اطمینان از بسته بودنِ اتصال (Connection) پس از اتمام کار، به عدم هدر رفتِ منابع سیستم کمک زیادی خواهد کرد.پايان قسمت دهم آموزش سي شارپ