ارتباط ASP با بانک های اطلاعاتی از طریق واسطی بنام ADO انجام می گیرد. با استفاده از رابط فوق می توان به انواع داده های ذخیره شده بسادگی، در کمترین زمان و صرفا بکمک یک مسیر دستیابی پیدا کرد. به همین دلیل می توان ادعا کرد که ADO ساده ترین روشی است که تاکنون برای ذخیره و بازیابی داده ها بوجود آمده است.ADO نسخه 5 / 2 دارای پنج شئ اساسی با نام : Connection , Command, RecordSet , Record , Stream است. دو شی Record و Stream در نسخه قبلی ADO وجود نداشتند. در این مقاله به بررسی برخی از اشیاء عمده ADO و متدهای مربوطه آنها خواهیم پرداخت.
شئ Connection
قبل از هر گونه ذخیره و بازیابی داده ها از بانک اطلاعاتی می بایست با ایجاد و مقدار دهی اولیه یک Connection زمینه لازم جهت ارتباط با بانک اطلاعاتی را بوجود آورد. در ADO با استفاده از شی Connection یک ارتباط با بانک اطلاعاتی ایجاد و پس از انجام عملیات دلخواه در رابطه با بانک اطلاعاتی و در زمانیکه به وجود آن دیگر نیاز نباشد، می توان آن را حذف کرد. Open کردن یک ارتباط به بانک اطلاعاتی پروژه ای واحد با نام ( ADODB(ActiveX Data Objects Database بوده که خود شامل تمامی اشیاء ADO است. برای ایجاد یک Connection نظیر سایر اشیاء ASP از متد Server.CreateObject استفاده می گردد.
Dim Conn
Set Conn = Server.CreateObject(ADODB.Connection)
بصورت پیش فرض Connection فقط خواندنی می باشند، شما می توانید وضعیت فوق را تغییر داده و در صورت نیاز و بکمک صفات مربوط به شی فوق ارتباطاتی از نوع خواندنی / نوشتنی و یا فقط نوشتنی ایجاد نمائید. در زمان استفاده از ADO می توان از مجموعه ای ثوابت که دربردارنده مقادیر متفاوتی برای آیتم های متفاوت می باشند و پیشاپیش تعریف شده اند استفاده کرد. این ثوابت در فایلی با نام Adovbs.inc قرار دارند. بمنظور استفاده از ثوابت فوق در صفحات ASP خود، می بایست فایل فوق را بکمک دستور Include به برنامه های خود ملحق نمائیم.
اگر فایل adovbs.inc را توسط ادیتوری نظیر Notepad فعال نمائید، ثوابت تعریف شده را بصورت مجموعه ای از گروهها مشاهده خواهید کرد. پس از ایجاد یک Connection با بانک اطلاعاتی می توان نوع ( Mode ) ارتباط را بکمک استفاده از ثوابت تعریف شده مشخص نمود. در صورتیکه بخواهیم از بانک اطلاعاتی صرفا اطلاعاتی را بخوانیم از ثابت adModeRead ، فقط اطلاعاتی را در بانک اطلاعاتی بنویسیم از ثابت adoModeWrite و در نهایت در صورتیکه قصد داریم بطور همزمان اطلاعاتی را از بانک اطلاعاتی خوانده و در آن اطلاعات جدیدی را نیز بنویسیم از ثابت adoModeReadWrite استفاده می گردد. توصیه می گردد با توجه به نوع رفتاری که با بانک اطلاعاتی خواهیم داشت آن را باز نمائیم چراکه در صورتیکه صرفا قصد خواندن و یا نوشتن را در یک بانک اطلاعاتی داشته باشیم و نخواهیم دو عملیات را با هم انجام دهیم، باز کردن بانک اطلاعاتی بصورت هم خواندنی و هم نوشتنی ( adoModeReadWrite ) سرعت دستیابی به بانک اطلاعاتی را کاهش خواهد داد.
ConnectionString
پس از تعیین Mode، می بایست صفت Connectionstring مربوط به شی Connection را مقدار دهی مناسب نمود. صفت فوق دارای چندین بخش بوده که می بایست مشخص گردند: نام Provider، نام سرویس دهنده بانک اطلاعاتی، نام بانک اطلاعاتی که قصد استفاده از آن را دارید، User Id لازم جهت اتصال به بانک اطلاعاتی (UID)، رمز عبور برای کاربرخاص ( PWD ).
هر یک از بخش های فوق توسط علامت ; از هم جدا می شوند. مثلا در ساده ترین حالت می توانید از یک Data Source Name یا DSN یا مربوط به ODBC، یک User ID، و یک رمز عبور جهت اتصال به بانک اطلاعاتی استفاده نمائید. یک DSN خود شامل نام Provider، نام سرویس دهنده بانک اطلاعاتی و نام بانک اطلاعاتی بوده و دیگر نیازی به مشخص نمودن مجدد آنها نخواهد بود. به مثال زیر توجه فرمائید.
Dim Conn
Set Conn = Server.Create0bject(ADODB.Connection)
Conn.Mode = adModeReadWrite
Conn.ConnectionString = DSN=myDSN;UID=Javad;PWD=7474;
روش فوق بهترین حالت ایجاد یک ارتباط نیست زیرا DSN بصورت پیش فرض از MSDASQL Provider استفاده می کند. اما JET OLEDB Provider بمراتب سریعتر و قابلیت های بیشتری را دارا است. بنابراین می توان جهت ارتباط با بانک اطلاعاتی مطابق زیر عمل نمود:
Dim Conn, ConnStr
ConnStr= PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE= + Server.MapPath(Path2DB)
Set Conn = Server.CreateObject(ADODB.Connection)
Conn.Mode = adModeReadWrite
Conn.ConnectionString = ConnStr
ConnectionString شامل نام Provider، نام سرویس دهنده بانک اطلاعاتی و نام بانک اطلاعاتی است. در مثال فوق از تابع Server.MapPath برای ترجمه مسیر مجازی به مسیر واقعی استفاده شده است. مثلا یک بانک اطلاعاتی موجود درwww.Test.com/test.mdb می تواند بصورت واقعی در مسیر E:\web\Mydatabase\Test.mdb قرار گرفته باشد. تابع Server.MapPath آدرس نوع اول را به آدرس نوع دوم ترجمه خواهد کرد. توجه داشته باشیم که شی ADODB.Connection نیازمند آگاهی از مسیر واقعی بانک اطلاعاتی است. فراموش نکنیم که قبل از باز نمودن Connection، تمامی تغییرات لازم بر روی صفت های مربوطه اعمال گردد. در صورتیکه بخواهیم پس از ایجاد ارتباط با بانک اطلاعاتی یک یا چند صفت مرتبط را تغییر دهیم، می بایست در ابتدا ارتباط خود را با بانک اطلا عاتی قطع (Connection، بسته گردد) و در ادامه تغییرات لازم را از طریق صفات مربوطه اعمال و مجددا Connection را برقرار نمود.