آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

اتصال به SQL Server در سی شارپ (SqlConnection)

دوره های مرتبط با این مقاله

برای ارتباط با هر پایگاه داده و انجام هر گونه عملیاتی لازم است تا به آن پایگاه داده وصل شویم. در ADO.NET جهت اتصال به پایگاه داده SQL Server از شی SqlConnection استفاده می شود. در این قسمت از آموزش سی شارپ به بررسی این شی و روش کار با آن خواهیم پرداخت.

این درس به توصیف SqlConnection Object و چگونگی اتصال به پایگاه داده می پردازد. اهداف این بخش به شرح زیر است

  • از کدامیک از شی های اتصال (Connection Object) استفاده می شود.
  • چگونه یک SqlConnection Object را معرفی کنیم.
  • چگونه SqlConnection Object در اپلیکیشن کار می کند.
  • درک اهمیتِ مدیریتِ اتصالِ موثرِ دایمی (lifetime).

مقدمه

اولین اقدامی که به هنگام ارتباط با یک پایگاه داده باید انجام داد، ایجاد اتصال (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("Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI");

SqlConnection Object که در بالا نشان داده شده است، از سازنده ای (Constructor) استفاده می کند که تنها دارای یک آرگومان رشته ای می باشد. این آرگومان، یک Connection String یا رشته ی اتصال نامیده می شود. جدول 1 بخش های یک Connection String را توصیف می کند.

جدول 1. رشته های اتصالِ ADO.NET شامل جفت های کلیدی/مقداری(key/value pairs) برای مشخص کردن چگونگی ایجاد یک اتصال پایگاه دادهی. این مقادیر شاملِ مکان، نام پایگاه داده، و اطلاعات کاربری می باشند.
نامِ پارامترِ رشته ی اتصال
توصیف
Data Source
سرور را تعریف می کند. می تواند دستگاه محلی، نام دامنه ی دستگاه، و یا آدرس IP باشد.
Initial Catalog(کاتالوگ اولیه)
نام پایگاه داده
Integrated Security(امنیت یکپارچه)
تنظیم برای SSPI به منظور ایجاد اتصال با ورود به ویندوزِ کاربر
User ID (نام کاربری)
نامِ پیکربندیِ کاربر در سرورِ SQL
Password(رمز عبور)
رمز ورود متناسب با SQL Server و ID کاربر

امنیت یکپارچه (Integrated Security) حالت امنیتی است که به هنگام کار کردن با یک دستگاه مجزا وجود دارد. با این حال، در بیشتر مواقع با مجوزهایی که به طور ویژه برای اپلیکیشن های مورد استفاده اختصاص داده شده اند، می توان بر اساس یک SQL Server User ID امنیت را به طور خاص تعیین نمود. شکل پایین یک رشته ی اتصال (Connection String) را با استفاده از پارامترهای User ID و Password، نشان می دهد.

                
SqlConnection conn = new SqlConnection("Data Source=DatabaseServer;Initial Catalog=Northwind;User ID=YourUserID;Password=YourPassword");

توجه داشته باشید که چگونه Data Source، به منظور تعیین یک پایگاه داده در دستگاهی دیگر، و یا در یک LAN و اینترنت، با DatabaseServer تنظیم شده است. ضمن آنکه User ID و Password جایگزین پارامتر امنیت یکپارچه (Integrated Security) می شوند.

استفاده از یک SqlConnection

هدف ایجادِ یک SqlConnection object این است که بتوان دیگر کدهای ADO.NET را برای کار با یک پایگاه داده، فعال سازید. SqlCommand و SqlDataAdapter، شی اتصال (Connection Object) را بعنوان یک پارامتر در نظر می گیرند. توالی عملیاتی که در طول عمر یک SqlConnection اتفاق می افتند به صورت زیر است:

  1. آرایه ی SqlConnection
  2. باز کردن اتصال(Connection)
  3. انتقال اتصال (Connection)به شی ADO.NET دیگر
  4. اجرای عملیات پایگاه داده با دیگر شی های ADO.NET
  5. بستن اتصال (Connection)

تاکنون دیدیم که یک SqlConnection چگونه معرفی می گردد. بقیه ی مراحل شامل باز کردن (Opening) ، پاس دادن یا انتقال (Passing)، استفاده کردن (Using) و بستن (Closing)در لیست دستور 1 ذکر شده اند.

                
using System;
using System.Data;
using System.Data.SqlClient;
/// 
/// Demonstrates how to work with SqlConnection objects
/// 
class SqlConnectionDemo
{
    static void Main()
    {
        // 1. Instantiate the connection
        SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI");
        SqlDataReader rdr = null;
        try
        {
            // 2. Open the connection
            conn.Open(); 
        
            // 3. Pass the connection to a command object
            SqlCommand cmd = new SqlCommand("select * from Customers", 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) پس از اتمام کار، به عدم هدر رفتِ منابع سیستم کمک زیادی خواهد کرد.

  • 26123
  •    4956
  • تاریخ ارسال :   1395/10/07

دانلود PDF دانلود سورس کد دانلود فیلم آموزشی دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
اتصال به SQL Server در سی شارپ (SqlConnection)
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال
کاربر میهمان1396/05/05

ممنون

خدا خیرت بده.


آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .