فرمت : WORD تعداد صفحه :47
فعال نمودن و غیر فعا ل نمودن یک Connection
بمنظور فعال نمودن و یا غیر فعال نمودن یک Connection می توان بصورت تلویحی عملیات فوق را با فراخوانی متدهای یک شی که از Connection استفاده می نمایند انجام و یا با صراحت و بکمک متدهای Open و یا Close اقدام به فعال نمودن و یا غیر فعال نمودن Connection نمود . متدهای Open و 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 نیز انجام خواهد شد .
مثال : استفاده از متد Dispose
در مثال زیر، یک شی SqlConnection ایجاد و در ادامه با استفاده از متد Open فعال و سپس بمنظور غیرفعال نمودن Connection و آزاد سازی منابع استفاده شده توسط Connection از متد Dispose استفاده و در نهایت شی مورد نظر به Nothing مقداردهی شده است .
نحوه استفاده از متد Dispose
تعریف و نمونه سازی یک شی جدید SqlConnection '
Dim cnNorthwind AS New System.Data.SqlClient.SqlConnection ()
مقدار دهی مناسب خصلت ConnectionString '
ConnectionString = "Data Source="(Local); " & _"Initial Catalog = Northwind;" & _
"Integrated Security=SSPI;"
فعال نمودن Connection '
open()انجام عملیات دلخواه و مرتبط با بانک اطلاعاتی '
بستن Connection که باعث آزاد سازی آن از Connection Pool '
بر روی سرویس دهنده می گردد .'
Dispose نمودن ارتباط که باعث حذف connection از connection pool بر روی ' سرویس دهنده می گردد ، ذخیره سازی منابع سرویس دهنده '
Dispose()آزاد سازی حافظه اشغال شده توسط شی SqlConnection '
cnNorthwind = Nothing
برخورد با رویدادهای Connection
رویداد StateChange زمانی که وضعیت Connection تغییر نماید ، محقق می گردد( وضعیت Connection از فعال به غیر فعال و یا از غیر فعال به فعال تبدیل گردد) .بمنظور برخورد مناسب با هر یک از رویدادها ، از یک Event handler استفاده می گردد. هر رویداد دارای Event handler مختص خود می باشد. Event handler مربوط به رویداد StateChange ، متدی است که دارای آرگومانی از نوع StateChangeEventArgs می باشد . آرگومان فوق، شامل داده مرتبط با رویداد است .