رشته اتصال یا 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 رشتهای به صورت زیر است :
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;
پارامترهاي پيشرفته زيادي وجود دارد که شما میتوانید از آنها در ساخت رشته اتصال، استفاده کنيد. فقط ابتداییترین پارامترها را در اين درس به شما آموزش داديم تا با مفاهيم ابتدايي ساخت رشته اتصال آشنا شويد.