لايه دوم در معماری دستيابی داده ، مكانيزم های لازم برای كار با ADO.NET ، كنترل های ASP.NET و providers را ارائه می نمايد. از امكانات ارائه شده در اين لايه می توان به منظور انجام مجموعه ای از عمليات و فرآيندهای متداول استفاده نمود . با استفاده از كنترل های متنوع منبع داده و نسبت دهی داده در ASP.NET 2.0 ، حجم كد مورد نياز به منظور حمايت از عمليات در ارتباط با داده كاهش و در مواردی نيز حذف می گردد .
Connection و Commands
ADO.NET از چندين Data Provider متفاوت برای اتصال به بانك های اطلاعاتی ، اجرای دستورات و بازيابی نتايج استفاده می نمايد . در ADO.NET از شی Connection برای اتصال به يك منبع داده خاص استفاده می گردد . مثلا" در صورت استفاده از بانك اطلاعاتی SQL Server 2000 ، می توان از شی SQLConnection به منظور اتصال به بانك اطلاعاتی استفاده نمود . كد زير روش انجام اين كار را نشان می دهد :
|
[Visual Basic] |
پس از اتصال به يك منبع داده ، می توان از شی Command به منظور اجرای دستورات و برگرداندن نتايج مورد نظر استفاده نمود .شی Command از طريق Command constructor كه يك query و يا عبارت SQL را دريافت می نمايد ، ايجاد می گردد . پس از ايجاد شی Command با استفاده از خصلت CommandText می توان عبارات SQL را ويرايش كرد .
|
[Visual Basic] |
شی Command چندين متد Execute را به منظور اجرای Stored Procedure ، query و يا عبارات غير query نظير Update و Insert ، ارائه نموده است :
-
متد ExecuteReader : داده را به عنوان يك شی DataReader برمی گرداند . از متد فوق می توان در ارتباط با هر نوع query كه داده ئی را برمی گرداند ،استفاده نمود .
-
متد ExecuteScalar : متد فوق يك مقدار نظير تعداد ركوردهائی كه با شرايط ذكر شده در يك query خاص مطابقت می نمايند و يا نتايج حاصل از فراخوانی يك تابع بانك اطلاعاتی را برمی گرداند .
-
متد ExecuteNonQuery : متد فوق ، دستوراتی را كه سطرهائی را برنمی گردانند ( نظير Sored procedure ، update و insert ) ، اجراء می نمايد .
در زمان مقداردهی اوليه شی Command می بايست با توجه به شرايط موجود ، متد مورد نظر را انتخاب نمود .
متد ExecuteReader ، نتايج را از طريق يك DataReader برمی گرداند . DataReader يك ساختار داده ئی متصل گراء ، فقط به سمت جلو و فقط خواندنی از داده های حاصل از اجرای يك query را برمی گرداند . پس از اجرای query ، اولين ركورد به DataReader برگردانده می شود . در اين حالت ارتباط با بانك اطلاعاتی همچنان وجود داشته و امكان برگرداندن ركورد بعدی وجود خواهد داشت . در ساختمان داده فوق، صرفا" امكان خواندن ركوردها وجود داشته و نمی توان ركوردهای موجود را ويرايش نمود .
DataAdapters و DataSets
با اين كه DataReader برای برنامه های متصل گرا كافی به نظر می آيد ، ولی اين ساختمان داده قادر به حمايت از مدل غيرمتصل برای دستيابی به بانك های اطلاعاتی نمی باشد . بدين منظور از كلاس های DataAdapter و DataSet ،استفاده می گردد .
DataSet مهمترين ابزار ذخيره سازی داده در معماری غيرمتصل ADO.NET است . DataSet مستقيما" و از طريق يك شی Connection با بانك اطلاعاتی ارتباط برقرار نمی نمايد . برای استقرار داده در يك DataSet می بايست يك DataAdapter ايجاد گردد . مسئوليت DataAdapter ارتباط با بانك اطلاعاتی ، اجرای query و استقرار داده در DataSet می باشد . پس از فراخوانی متد Fill و يا Update توسط DataAdapter ، تمامی عمليات انتقال داده در DataSet به صورت اتوماتيك انجام خواهد شد . هر provider ارائه شده در فريمورك دات نت دارای يك شی DataAdapter است .
DataSet ، مجموعه ای كامل از داده شامل جداول ، محدوديت ها و ارتباط بين جداول را در خود نگهداری می نمايد و می تواند شامل داده های محلی ( داده هائی كه از طريق كد ايجاد شده اند ) و يا داده هائی از چندين منبع داده باشد .
ارتباط با منابع داده موجود توسط DataAdapter كنترل می گردد . DataAdapter همچنين تغييرات ايجاد شده در DataSet را به منبع داده منتقل می نمايد .
كد زير سناريوی استفاده از يك DataSet را نشان می دهد :
|
[Visual Basic] |
در كد فوق :
-
به منظور اتصال به بانك اطلاعاتی SQL Server يك SQLConnection ايجاد شده است .
-
برای اجرای query مورد نظر در ارتباط با جدول Customers يك SQLCommand ايجاد شده است .
-
برای ايجاد SQLCommand يك DataAdapter ايجاد شده است ( ارتباط با بانك اطلاعاتی ) .
-
از طريق DataAdapter يك DataSet ايجاد شده است .DataSet بخش غير متصل عمليات داده بوده و می تواند به مجموعه وسيعی از كنترل های وب ASP.NET 2.0 نسبت داده شود .
در زمان استفاده از يك DataSet می توان آن را به هر نوع كنترل داده نسبت داد . بدين منظور از خصلت DataSource و متد DataBind استفاده می گردد . در صورتی كه داده های موجود در بانك اطلاعاتی تغيير نمايند ، تغييرات به صورت اتوماتيك در DataSet اعمال نمی شود و می بايست مجددا" از متد DataBind استفاده گردد . ( زمان و محل استفاده از متد DataBind از چالش های پياده كنندگان برنامه های وب در ASP.NET 1.x است ) .
در ASP.NET 2.0 تمامی فرآيندهای مربوط به ايجاد يك DataSet ، نسبت دهی داده ، نگهداری و يكسان سازی داده با ارائه مفهوم جديد منابع داده بهبود و تسهيلات ويژه ای در اختيار پياده كنندگان برنامه های وب قرار می گيرد.
ASP.NET 2.0
در ASP.NET 2.0 اغلب عمليات و يا فرآيندهای مورد نياز به منظور ايجاد يك SQLCommand ، توليد يك DataAdapter و استقرار داده در يك DataSet توسط بكارگيری DataSource از ديد پياده كنندگان برنامه های وب مخفی نگه داشته می گردد . در چنين مواردی می توان با استفاده از برنامه كمكی ( ويزارد ) نسبت دهی داده ، عمليات اشاره شده را به صورت اتوماتيك نيز انجام داد . برنامه كمكی Configure DataSource ، كدمورد نياز به منظور اتصال به منابع ذخيره سازی داده ( نظير بانك های اطلاعاتی ، فايل های معمولی ، فايل هار XML ) را توليد و query مورد نظر را ايجاد می نمايد .
با داشتن يك منبع ذخيره سازی داده ، می توان در ادامه منبع داده را به يك كنترل نسبت داد . ارتباط برقرار شده بين منبع داده و كنترل مورد نظر ، Data Binding ناميده می شود . مقادير استخراج شده از منبع داده را می توان به خصلت های مربوط به هر كنترل نسبت و يا از آنان در جداول ، ليست ها و يا grid بدون نياز به نوشتن كد خاصی استفاده نمود .
