مقدمه :
کنترل 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 قرار دهیم . در این صورت این کنترل به پایگاه داده تعیین شده و در هر بار باز شدن صفحه به طور خودکار ارتباط خود را به پایگاه داده باز کرده و با بستن صفحه نیز ارتباط خود را قطع می کند . در مثال شماره ۱ ، نحوه اتصال یک کنترل 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 بروید . در مثال شماره ۲ به آموزش نحوه تعیین دستور Select برای کنترل AccessDataSource پرداخته ایم :
مثال ۲ : در مثال زیر ابتدا یک کنترل 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 را از طریق تایپ آدرس آن در نوار آدرس مرورگر نمی دهند و به همین دلیل افراد مزاحم و سایرین نمی توانند به فایل پایگاه داده شکا دسترسی داشته باشند و آنها را حذف کرده و یا تغییر دهند .
نکته ۲ : جهت اتصال به یک پایگاه داده Access که Password-Protected می باشد و به عبارت دیگر دارای رمز عبور است ، باید از کنترل SqlDataSource استفاده کنید . زیرا کنترل AceesDataSource توانایی اتصال به پایگاه داده های رمز دار را ندارند .