کلاس DataAdapter

DataAdapter را می‌توان به عنوان يک پل بين منبع اطلاعاتي واقعي (data source) و برنامه خودمان در نظر بگيريم که معمولاً همراه DataSet مورد استفاده قرار می‌گیرد. استفاده DataAdapter و DataSet همراه با هم يک راه حل غير متصل (disconnected) براي استفاده از منبع اطلاعاتي يا همان Data Source است (از اين به بعد به جاي منبع اطلاعاتي از لفظ Data source استفاده می‌کنیم چرا که قابل فهم تر است). يعني ديگر لازم نيست يک connection براي استفاده از آن‌ها باز کنيم. DataAdapter به ما اين اجازه را می‌دهد که DataSet را با استفاده از مقاديري که در Data Source وجود دارد پر کنيم. کلاس DataAdapter، از کلاس پايه System.Data.Common.DbDataAdapter به ارث برده می‌شود و هر Data provider ،DataAdapter مختص به خود را دارد.

کلاس dataAdapter Data provider
SqlDataAdapter SQL Server
OleDbDataAdapter OLE DB
OdbcDataAdapter ODBC

کلاس DbDataAdapter متدها و property هاي جدول زير را در اختيار ما قرار می‌دهد.
خاصیت‌ها

خاصيت توضيحات
DeleteCommand شيء command را براي پاک کردن يک رکورد در اختيار ما قرار می‌دهد.
FillCommandBehavior رفتار command را که براي پر کردن يک dataAdapter مورد استفاده قرار می‌گیرد را براي ما مشخص می‌کند.
InsertCommand شيء command را براي پر کردن يک رکورد در اختيار ما قرار می‌دهد.
SelectCommand شيء command را براي انتخاب کردن (Select) يک رکورد در اختيار ما قرار می‌دهد.
UpdateBatchSize تعداد command هايي را که می‌توان به عنوان يک دسته اجرا کرد، به ما می‌گوید.
UpdateCommand شيء command را براي update کردن يک رکورد در اختيار ما قرار می‌دهد.

متدها

متد توضيحات
AddToBatch() يک شيء command را به دسته‌ای که قرار است اجرا شود اضافه می‌کند.
ClearBatch() تمام اشياء command اي که قرار است اجرا شود را از دسته پاک می‌کند.
ExecuteBatch() دسته command ها را اجرا می‌کند.
Fill() خاصيت Selectcommand را اجرا می‌کند و نتيجه در dataset مربوطه قرار می‌دهد.
InitializeBatching() عمليات دسته بندي را مقداردهي اوليه می‌کند.
GetFillParameters() پارامترهاي selectCommand را می‌گیرد.
TerminateBatching() عمليات دسته بندي را پايان می‌بخشد.
Update() دستورهاي update ،Insert و delete مربوط به اين DataAdapter را صدا ميزند و با استفاده از آن دستورها data source را update می‌کند.

براي مثال‌های بعد ما از SQL Server به عنوان data provider استفاده می‌کنیم. براي ساختن يک DataAdapter شما می‌توانید از نوع بدون پارامتر آن استفاده کنيد.

SqlDataAdapter adapter = new SqlDataAdapter();

dataApadpter دستور را در data source اجرا می‌کند و يک خاصيت به اسم selectCommand دارد که شيء DbCommand را (که اين شيء select را مشخص می‌کند و براي استخراج از ديتابيس است) به آن می‌دهیم. مانند مثال زير:

SqlCommand selectCommand = new SqlCommand("SELECT * FROM Students", connection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = selectCommand;

براي اجراي دستوري که در selectCommand مشخص کرديم بايد از تابع ()fill در DataAdapter استفاده کنيم. براي استفاده از اين تابع ما بايد از يک کلاس DataTable يا DataSet استفاده کنيم. در مثال زير یک شیء از DataTable به وسيله مقادير به دست آمده از منبع داده پر شده است :

DataTable myTable = new DataTable("TableName");

adapter.Fill(myTable);

اين کد در واقع دستوري که در selectCommand مشخص کرده‌ایم را اجرا می‌کند و نتيجه را در DataTable اي مشخص کرده‌ایم به اجرا در می‌آورد.
شکل ديگر دستور Fill يک DataSet و نام DataTable ايجاد شده را قبول می‌کند :

DataSet myDataSet = new DataSet();

adapter.Fill(myDataSet, "TableName");

بعد از اجراي کد بالا يک DataTable جديد با نام TableName به خاصيت DataSet ،Tables اضافه می‌شود. حال می‌توان با استفاده از خاصيت DataTable ،Row به داده‌ها دسترسي يافت.
DataAdapter، خاصیت‌های ديگري هم دارد که براي UpdataCommand و InsertCommand و DeleteCommand به کار می‌رود که اين دستورها را با commandBuilder می‌سازیم که در درسهاي آينده به آن‌ها می‌پردازیم.