کلاس 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 میسازیم که در درسهاي آينده به آنها میپردازیم.
با سلام و تشكر از سايت خوبتون. خيلي خوب و روان توضيح داديد. اگر بشه آخر هر درس يك مثال بزنيد و خروجي آن را هم بصورت عكس نشان بدهيد خيلي خوب ميشه و براي افرادي مثل من كه مبتدي هستم بيشتر فابل فهم ميشه. يا اينكه فايل اون مثال را در آخر هر درس بگذاريد.
ممنون از سايت خوبتون.