معرفی و نحوه اتصال کنترل AceessDataSource به پايگاه داده
مقدمه :
کنترل AceessDataSource يک کنترل سرور داده است که به طور اختصاصی برای کار با فايل
های پايگاه داده Microsoft Aceess طراحی شده است . اين کنترل توانايي اتصال ، دريافت
و ارسال اطلاعات به فایل های پايگاه داده Access که پسوند آنها ( .mdb ) است ، را داراست
. اين کنترل ها همانند ساير کنترل های سرور داده ديگر ، خود قادر به نمايش اطلاعات
دريافتی نيسنتد و برای اين منظور بايستی يک کنترل وب نمايش دهنده اطلاعات همانند کنترل
های GridView و یا DetailsView را به اين کنترل متصل کرد ، تا بتوان اطلاعات دريافتی
آنها را به صورت جدول وار بر روی صفحات ASP.NET نمايش داد . همچنين به وسیله اين کنترل
می توان به ویرایش ، حذف و وارد کردن اطلاعات مورد نظر به پايگاه داده Access متثل
به آن بپردازيد .
کنترل AceessDataSource شباهت بسیار زیادی به کنترل SqlDataSource داشته و تقریبا تمام
عملکرهای آن در انجام عمليات های مختلف داده ای همچون انتخاب ، ویرایش ، حذف و يا وارد
کردن اطلاعات جديد با کنترل SqlDataSource يکسان است . به همين دلیل توصیه می کنم ابتدا
مطالب بخش کنترل SqlDataSource را مطالعه اين کنترل بپردازيد .
کنترل های AceessDataSource و SqlDataSource دارای تفاوت هایی نيز هستند . از مهمترين
اين تفاوت ها می توان به موارد زير اشاره کرد :
- کنترل SqlDataSource فقط برای اتصال به پايگاه داده Microdoft Access طراحی شده است
، اما کنترل AceessDataSource توانایی اتصال به پايگاه داده های Access ، SQL Server
, Oracle , OLE DB و OBDC را داراست .
- کنترل SqlDataSource برای اتصال به پايگاه داده مورد نظر از يک رشته ارتباطی که در
خاصيت ConnectionString
آن تعيين شده و شامل اطلاعاتی از قبيل نام و مکان سرور پايگاه داده و شرایط امنيتی
اتصال به آن است ، استفاده می کند و برای ايجاد ارتباط حتما به يک سرور SQL Server
نياز دارد . اما کنترل AceessDataSource برای اتصال به پايگاه داده به سرور خاصی نیاز
ندارد و فقط بایستی نام فایل پايگاه داده و مسیر دسترسی به آن در خاصيت DataFile کنترل
، به طور کامل ذکر کرد . اين کنترل دارای شرايط امنيتی خاص برای اتصال به پايگاه داده
نيست . در ادامه به معرفی روش اتصال اين کنترل به پايگاه داده Access را شرح خواهم
داد .
- کنترل SqlDataSource دارای ضريب امنیتی بسیار بالایی در ارتباط با بانک اطلاعاتی است
و به برنامه نويسی سطح بالایی نیاز دارد . اما کنترل AceessDataSource يک کنترل بسیار
ساده بوده و دارای ضريب امنيت بسیار پايينی در اتصال به منابع اطلاعاتی است . بنابراين
بنايد از اين نوع پايگاه داده و کنترل سرور داده در برنامه های وب حساس و بر روی وب
زياد استفاده کرد .
در موارد فوق تفاوت های مهم دو کنترل AceessDataSource و SqlDataSource را بیان کردم
. اما به هر حال کنترل AceessDataSource دارای قابليت های بسیار زيادی در کار با فايل
های پايگاه داده Access است و از اين جهت نبايد آن را دست کم گرفت . مهمترين حسن اين
کنترل سادگی اتصال و کار کردن با آن است و اينکه برای ايجاد ارتباط به سرور خاصی نياز
نداريم .
نحوه اتصال يک کنترل AceessDataSource به پايگاه داده و دريافت اطلاعات از آن :
همانطور که گفتم ، کنترل AceessDataSource برای اتصال به پايگاه داده Access مورد استفاده
قرار می گيرد . برای اتصال يک کنترل AceessDataSource به پايگاه داده Access ، بایستی
نام و مسير کامل دسترسی به پايگاه داده را در خاصيت DataFile کنترل AceessDataSource
قرار دهيم . در اين صورت اين کنترل به پايگاه داده تعيين شده و در هر بار باز شدن صفحه
به طور خودکار ارتباط خود را به پايگاه داده باز کرده و با بستن صفحه نيز ارتباط خود
را قطع می کند . در مثال شماره 1 ، نحوه اتصال يک کنترل AceessDataSource را به يک
پايگاه داده Access نشان داده ايم :
مثال : در مثال زير يک کنترل AccessDataSource را به پايگاه داده
UniverCity که از نوع Access است متصل کرده ايم . برای اين منظور نام و مسير کامل دسترسی
به پايگاه داده را در خاصيت DataFile کنترل قرار داده ايم :
< asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="~/App_Data/UniverCity.mdb" >
</asp:AccessDataSource>
|
مرحله اول در کار با کنترل AccessDataSource ، اتصال به پايگاه داده مورد نظر بود .
اما در گام بعدی بايد اطلاعات مورد نظر را که می خواهيم تا کنترل از پايگاه داده استخراج
کرده و برای ما ارسال کند را تعيين کنيم . نحوه عملکرد کنترل AccessDataSource در انتخاب
و دريافت اطلاعات از پايگاه داده ، کاملا شبيه کنترل SqlDtaSource است . برای تعيين
اطلاعاتی که می خواهيم کنترل از پايگاه داده متصل به آن استخراج کند ، بايد يک دستور
SQL از نوع Select را در خاصيت SelectCommand کنترل قرار دهيم . نحوه تعيين اين دستور
بستگی به ساختار و معماری پايگاه و جدول مورد نظر داشته و اينکه چه فيلدها يا رکوردهایی
را می خواهيم از جدول بانک اطلاعاتی انتخاب کنيد . برای آشنایی با نحوه تعريف و استفاده
از دستور Select در زبان SQL می توانيد به
بخش آموزش دستور Select در زبان SQL برويد . در مثال شماره 2 به آموزش نحوه
تعيين دستور Select برای کنترل AccessDataSource پرداخته ايم :
مثال 2 : در مثال زير ابتدا يک کنترل AccessDataSource را به پايگاه
داده UniverCity متصل کرده و سپس توسط خاصيت SelectCommand يک دستور Select را برای
تعيين اطلاعاتی که می خواهيم تا کنترل از پايگاه داده دريافت کند را تعيين کرده ايم
:
< asp:AccessDataSource ID="AccessDataSource1"
runat="server" DataFile="~/App_Data/UniverCity.mdb"
SelectCommand="Select Name , Family From Students" >
</asp:AccessDataSource>
|
نکته امنيتی مهم : چنانچه شما فايل پايگاه داده Access مورد استفاده
خود را در پوشه اصلی برنامه وب ( منظور در سايت های وب پوشه اصلی سايت در فضای Host
است ) ن نگهداری می کنيد ، آن را به پوشه App_Data انتقال دهيد . انجام اين کار باعث
می شود تا فايل پايگاه داده شما به صورت محافظت شده و خصوصی قرار بگيرد . زيرا برنامه
ASP.NET اجازه دسترسی مستقيم به محتويات فايل های موجود در پوشه App_Data را از طريق
تايپ آدرس آن در نوار آدرس مرورگر نمی دهند و به همين دليل افراد مزاحم و سايرين نمی
توانند به فايل پايگاه داده شکا دسترسی داشته باشند و آنها را حذف کرده و یا تغيير
دهند .
نکته 2 : جهت اتصال به يک پايگاه داده Access که Password-Protected
می باشد و به عبارت ديگر دارای رمز عبور است ، بايد از کنترل SqlDataSource استفاده
کنيد . زيرا کنترل AceesDataSource توانایی اتصال به پايگاه داده های رمز دار را ندارند
.