رشته اتصال یا Connection String

رشته اتصال یا Connection String یک سری از جفت های  نام/مقدار (name/value) است که به وسیله سمیکالن از هم جدا شده اند و نشان دهنده تنظیماتی برای اتصال به دیتابیس می باشند. این تنظیمات شامل مکان دیتابیس، اعتبارسنجی، امنیت و نام دیتابیسی است که به آن متصل شده ایم. connection string برای منابع داده ای مختلف یکسان نیست. به عنوان مثال OLE DB و ODBC نیاز به تعیین یک درایور OLE DB  و ODBC در رشته اتصالشان دارند. کلاس های کانکشن (Connection class) دارای یک خاصیت ConnectionString هستند که شما می توانید با استفاده از آن  به دیتابیس وصل شوید. در زیر مثالی از یک رشته اتصال برای وصل شدن به یک منبع داده SQL Server Expres آمده است :

Data Source=.\SQLEXPRESS; Initial Catalog=University; Integrated Security=SSPI;

برای آگاهی بیشتر از انواع رشته اتصال به نشانی زیر مراجعه کنید :

در مثال های زیر رشته های اتصالی نشان داده شده اند که از آنها برای اتصال به یک منبع داده SQL Server استفاده می شود. شما می توانید از طریق لینک http://connectionstrings.com برای یافتن منابع داده ای دیگر مانند Access اقدام نمایید. هنگام ایجاد رشته اتصال لازم است که منبع داده ای یا سروری که از آن استفاده می کنید را مشخص کنید. برای این کار می توانید از پارامترهای Data Source یا Server استفاده کنید. رشته اتصال نشان داده شده در زیر برای اتصال به یک منبع داده ای SQL Express مورد استفاده قرار می گیرد :

Data Source=.\SQLEXPRESS;Initial Catalog=University;Integrated Security=SSPI;

همانطور که می بینید در این مثال پارامتر Data Source به وسیله “.\SQLEXPRESS“ تعیین شده است که در نتیجه ما می توانیم به سروری با نام SQLEXPRESS که در کامپیوترمان ((localhost قرار دارد متصل شویم. همچنین می توانید از کلمه localhost استفاده کنید که معادل “localhost\SQLEXPRESS” می باشد. می توان از نام یک سرور یا یک کامپیوتر به عنوان یک منبع داده استفاده نمایید. فرض کنید نام سروری که به آن متصل هستیم MyServer و نام سروری که می خواهیم به آن وصل شویم SQLEXPRESS می باشد، پس می توانیم از رشته اتصال زیر استفاده کنیم :

Data Source=MyServer\SQLEXPRESS;Initial Catalog=University; Integrated Security=SSPI;

همچنین به جای Data Source می توانید از پارامتر Server استفاده کنید :

"Server=.\SQLEXPRESS;Initial Catalog=University; Integrated Security=SSPI"

لازم است که دیتابیسی که می خواهیم از آن استفاده کنیم را هم مشخص کنیم.پارامترهای Initial Catalog یاInitial Database  دیتابیسی که از آن استفاده می شود را نشان می دهند. شما می توانید دیتابیس را در زمان اجرا به وسیله فراخوانی متد DbConnection.ChangeDatabase یا اجرای دستور، “USE DATABASE <Database Name> where <Database Name>”که از دستورات SQL است تغییر دهید که در این صورت نام دیتابیس جدید جایگزین نام دیتابیس قبلی می شود. در درس آینده چگونگی اجرای دستورات غیر پرس و جو گر SQL (non-query SQL commands) از قبیل CREATE،  UPDATE، و  DELETE را به شما آموزش می دهیم. به جای Initial Catalog  یاInitial Database  از پارامتر Database هم می توان استفاده کرد.

Data Source=.\SQLEXPRESS;Database=University;Integrated Security=SSPI;

رشته اتصال به اعتبارسنجی و اطلاعات امنیتی هم نیاز دارد. پارامتر Integrated Security که با SSPI مقداردهی شده است نشان دهنده این است که ما می خواهیم از اعتبارنامه کاربر ویندوز استفاده کنیم.

Data Source=.\SQLEXPRESS;Initial Catalog=University; Integrated Security=SSPI;

همچنین می توانید از پارامتر Trusted_Connection نیز استفاده کنیم و مقدار آن را برابر True قرار دهیم.

Data Source=.\SQLEXPRESS;Initial Catalog=University; Trusted_Connection=True;

یکی دیگر از راه های اتصال استفاده از کد کاربری و کلمه عبور است که برای این کار می توانیم از پارامترهای  User Id و Password  به صورت زیر استفاده کنیم :

Data Source=.\SQLEXPRESS;Initial Catalog=University;
 User Id=database_user;Password=the_password;

وقتی از Sql Server استفاده می کنیم، می توانیم یک فایل دیتابیس را به وسیله پارامتر AttachDbFileName به یک سرور محلی SQL پیوست کنیم.

Data Source=.\SQLEXPRESS;AttachDbFileName=C:\Data\University.mdf;
  Database=University; Trusted_Connection=True;

 

تنظیم ConnectionString در برنامه

فرض کنید که شما یک برنامه نوشته اید که دارای یک بانک اطلاعاتی می باشد. برای ارتباط بین بانک و برنامه دو حالت وجود دارد. حالت اول این است که شما بعد از ایجاد بانک بر روی نام آن کلیک و از پنجره Properties مقدار خاصیت ConnectionString را کپی کرده و در برنامه از آن استفاده می کنید :

connectionstring-in-ado-01
مقدار جلوی خاصیت ConnectionString رشته ای به صورت زیر است :

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\YourName\Documents\University.mdf;Integrated Security=True;Connect Timeout=30

با دقت در رشته بالا، متوجه می شوید که دیتابیس در مسیر یزر قرار دارد :

C:\Users\YourName\Documents\University.mdf

در این حالت ، اگر شما برنامه را بخواهید در یک کامپیوتر دیگر اجرا کنید باید دیتابیس را هم دقیقا در مسیر بالا قرار دهید، تا ارتباط بین بانک و برنامه برقرار شود. حالت دیگر این است که شما بخواهید دیتابیس و برنامه در کنار هم باشند که دیگر نیاز به کپی کردن دیتابیس در مسیر دیگر نباشد. در این حالت دیتابیس را در پوشه Debug برنامه تان قرار می دهید. و سپس مسیر بالا را به صورت زیر تغییر می دهید :

|DataDirectory|\University.mdf

 

ConnectionStringBuilder

دات نت دارای کلاسی به نام ConnectionStringBuilder برای هر یک از data providers می باشد. این کلاس از کلاس پایه DbConnectionStringBuilder ارث بری می کند. در جدول زیر انواع مختلف کلاس ConnectionStringBuilder نشان داده شده است :

Provider ConnectionStringBuilder Class
SQL Server SqlConnectionStringBuilder
OLE DB OleDbConnectionStringBuilder
ODBC OdbcConnectionStringBuilder

به عنوان مثال می خواهیم از SQL Server provider استفاده کنیم. می توانیم از کلاس SqlConnectionStringBuilder برای ایجاد رشته های اتصال SQL Server استفاده نماییم.

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = @".\SQLEXPRESS";
builder.IntegratedSecurity = true;
builder.InitialCatalog = "Northwind";

این کلاس دارای خواص متناظر با پارامترهای مختلف رشته اتصال می باشد. از آنجاییکه منابع داده ای متفاوت هستند، کلاس های مختلف ConnectionStringBuilder نیز دارای مجموعه ای از خواص مختلف برای رشته اتصال می باشد. برای دسترسی به رشته اتصال ایجاد شده توسط کلاس ConnectionStringBuilder می توان از خاصیت ConnectionString استفاده نمود.

string connectionString = builder.ConnectionString;

پارامترهای پیشرفته زیادی وجود دارد که شما می توانید از آنها در ساخت رشته اتصال استفاده کنید. فقط ابتدایی ترین پارامترها را در این درس به شما آموزش دادیم تا با مفاهیم ابتدایی ساخت رشته اتصال آشنا شوید.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر و اگر سوالی دارید در بخش پرسش و پاسخ مطرح بفرمایید.

  1. zinar پاسخ دادن

    مرسی مطالبتون عالی هستش دستتون درد نکنه

    • یونس ابراهیمی پاسخ دادن

      سلام…ممنون دوست عزیز

  2. mostafa پاسخ دادن

    اقا ممنون. کارمو را انداختی

    • یونس ابراهیمی پاسخ دادن

      خواهش میکنم،به دوستاتون سایت بنده رو معرفی بفرمایید

  3. داوری پاسخ دادن

    سلام
    من در فایل cinfig ، اتصال به دو پایگاه داده را مشخص کرده ام .
    در قسمت اتصال به پایگاه داده باید به گونه ای اتصال را برقرار کنم تا اگر در آینده نیاز به تغییر پایگاه داده شد تنها لازم باشد فایل config دچار تغییر شود، ایمن قسمت را مشکل دارم.
    ممنون اگر راهنمایی ام کنید

    • یونس ابراهیمی پاسخ دادن

      سلام، ممنون میشم سوالتونو توی انجمن مطرح بفرمایید.

  4. احسان پاسخ دادن

    سلام
    چطوری می شه connection string ای در پروژه ویندوزی سی شارپ درست کنیم که این برنامه رو بتونیم روی هرکامپیوتر دیگه ای نصب کنیم بدون اینکه نیاز باشه استرینگ
    آن را خودمان تغییر دهیم؟ با سپاس

    • یونس ابراهیمی پاسخ دادن

      سلام، ممنون میشم سوالتونو توی انجمن مطرح بفرمایید.

  5. mohammadrg پاسخ دادن

    واقعا عالی عااااالی. اگه ثبت نام ۵۰ تومنم باشه باز ارزش داره …
    جامع و سلیسن مطالبتون

    • یونس ابراهیمی پاسخ دادن

      ممنون از لطفتون دوست عزیز…اینو شما می فرمایین، دوستانی هستن که به این مبلغ هم اعتراض دارن!!!