فعال نمودن و غیر فعا ل نمودن یک Connection
بمنظور فعال نمودن و یا غیر فعال نمودن یک Connection می توان بصورت تلویحی عملیات فوق را با فراخوانی متدهای یک شی که از Connection استفاده می نمایند انجام و یا با صراحت و بکمک متدهای Open و یا Close اقدام به فعال نمودن و یا غیر فعال نمودن Connection نمود . متدهای Open و Close دو متد اولیه برای هر Connection می باشند .
• متد Open با استفاده از اطلاعات موجود در خصلت ConnectionString ، با یک منبع داده ارتباط و یک ارتباط فعال شده را ایجاد خواهد کرد .
• متد Close باعث غیر فعال شدن Connection می گردد .
لازم است به این نکته اشاره گردد که بستن ( غیر فعال نمودن ) یک Connection امری لازم و ضروری است ، چراکه اکثر منابع داده صرفا تعداد محدودی از ارتباطات فعال را حمایت نموده و در ضمن ارتباطات فعال ، منابع با ارزش سیستم را اشغال و حجم عملیاتی بر روی سیستم را افزایش خواهند داد .
فعال نمودن و غیر فعال نمودن صریح یک Connection
استفاده صریح از متدهای Open و Close بمنظور فعال نمودن و یا غیر فعال نمودن Connection توصیه و دارای مزایای زیر است :
• کد نوشته شده دارای خوانائی بمراتب بیشتری خواهد بود .
• اشکال زدائی برنامه ها با سرعت مطلوبی انجام خواهد شد .
• موثرتر می باشد.
پس از استفاده Connection ، لازم است که ارتباط ایجاد شده غیر فعال گردد . بدین منظور، می توان از متدهای Close و یا Dispose مربوط به شی Connection استفاده نمود. متد Close ، تراکنش های بلاتکلیف را تعیین تکلیف نموده و در ادامه ارتباط را غیر فعال می نماید . در مواردیکه Pooling فعال شده باشد ، متد فوق باعث آزادسازی ارتباط ایجاد شده از Connection pool می گردد . فراخوانی متد Close توسط یک برنامه می تواند چندین مرتبه صورت پذیرد.
فعال نمودن و غیر فعال نمودن تلویحی یک Connection
در صورت استفاده از DataAdapters ، ضرورتی به فعال نمودن و یا غیر فعال نمودن یک Connection وجود نخواهد داشت . زمانیکه یکی از متدهای مربوط به اشیاء فوق ، فراخوانده می گردد ( مثلا متد Update و یا Fill مربوط به شی SqlDataAdapter ) ، متد مورد نظر بررسی لازم در خصوص فعال بودن ارتباط را انجام و در صورتیکه ارتباط فعال نشده باشد ، SqlDataAdapter ارتباط را فعال و پس از انجام عملیات مورد نظر ، ارتباط را غیر فعال خواهد نمود .
مثال : در صورتیکه یک DataSet داده خود را از چندین جدول متفاوت که در بانک اطلاعاتی مشابه قرار دارند ، دریافت می نماید ،صرفا یک Connection وجود داشته و دارای چندین DataAdapters خواهیم بود (هر DataAdapters مرتبط با یک جدول ) . در صورتیکه Connection بصورت تلویحی ( عدم استفاده صریح از متدهای Open و Close ) فعال و یا غیر فعال گردد ، در زمان پر نمودن اطلاعات در Dataset ، ارتباط با منبع داده چندین مرتبه فعال و یا غیر فعال خواهد شد . در چنین مواردی مناسب است که در ابتدا Connection با صراحت فعال و پس از فراخوانی متدهای Filling مربوط به چندین DataAdapters ، ارتباط ایجاد شده با منبع داده را با بکارگیری متد Close و باصراحت غیر فعال نمود .
استفاده از متد Dispose
زمانیکه یک Connection غیرفعال می گردد ، جریان اطلاعات به و یا از منبع داده غیر فعال می گردد. در چنین حالتی ، منابع غیرمدیریت یافته استفاده شده توسط شی Connection ، آزاد نخواهند گردید.در صورتیکه Connection pooling فعال شده باشد ، عملیات آزاد سازی Connection از Pool نیز انجام خواهد شد. اشیاء SqlConnection و OleDbConnection دارای یک متد Dispose بوده که از آن بمنظور آزادسازی منابع غیرمدیریت یافته استفاده می گردد . با فراخوانی متد Dispose ، عملیات حذف Connection از Connection pool نیز انجام خواهد شد .