PDA

View Full Version : دلیل وجود کلاسهای مختلف برای کار با Database



plato
چهارشنبه 16 خرداد 1386, 06:55 صبح
دلیل وجود کلاسهای connection, dataAdapter, datatReader, command با توجه به اینکه بعضی از اعمال آنها شبیه به هم می باشد، چیست؟
مثلا :
1. با توجه به اینکه بوسیله هر کدام از کلاسهای dataAdapter, datatReader, command می توان به دیتابیس متصل شد پس وجود شئ Connection چه دلیلی دارد.
2. برای اجرای هر نوع Query از dataAdapter, command میتوان استفاده کرد. پس چرا هر دوی آنها وجود دارد؟
مسلما این کلاسها در بعضی اعمال هم پوشانی دارند، لطفا در مورد اعمالی که باعث تفاوت این کلاسها از یکدیگر می باشد، توضیح دهید.
قبلا از راهنمایی شما متشکرم.

omid_Ahmadi
چهارشنبه 16 خرداد 1386, 07:10 صبح
1) اتصال به بانک اطلاعاتی فقط توسط DbConnection انجام میشه و مابقی کلاسها از اتصال برقرار شده استفاده می کنن تا بتونن وظایف خودشون رو انجام بدن. از کجا خوندید که DbCommand هم به تنهایی می تونه به بانک اطلاعاتی متصل بشه؟
2) برای اجرای Query فقط از DbCommand میشه استفاده کرد و برای مشاهده و بررسی نتیجه اون، یکی از روشها استفاده از DataReader هست. پس میبینید که با استفاده از DbDataReader نمیشه دستوری رو در بانک اطلاعاتی اجرا کرد و برای این کار باید از DbCommand استفاده کرد. همونطور که با DbCommand نمیشه به بانک متصل شد و باید از DbConnection استفاده کرد.

اگر همپوشانی دیگه ای رو هم مشاهده کردید، می تونید بپرسید.

موفق باشید.

plato
چهارشنبه 16 خرداد 1386, 07:43 صبح
نقل قول : اتصال به بانک اطلاعاتی فقط توسط DbConnection انجام میشه

1. ولی با dataAdapter هم بدون connection میشه متصل شد. به این دستور توجه کنید :
OleDbDataAdapter custDA = new OleDbDataAdapter(mySelectText, myConnString)
به جای استفاده از یک شئ connection از یک رشته ی ConnectionString استفاده شده است.


نقل قول : برای اجرای Query فقط از DbCommand میشه استفاده کرد

2. از DataAdapter هم برای اجرای query میتوان استفاده کرد.

در مورد DataReader اطلاعاتی ندارم.

Alireza_Salehi
چهارشنبه 16 خرداد 1386, 09:16 صبح
نقل قول : اتصال به بانک اطلاعاتی فقط توسط DbConnection انجام میشه

1. ولی با dataAdapter هم بدون connection میشه متصل شد. به این دستور توجه کنید :
OleDbDataAdapter custDA = new OleDbDataAdapter(mySelectText, myConnString)
به جای استفاده از یک شئ connection از یک رشته ی ConnectionString استفاده شده است.


نقل قول : برای اجرای Query فقط از DbCommand میشه استفاده کرد

2. از DataAdapter هم برای اجرای query میتوان استفاده کرد.

در مورد DataReader اطلاعاتی ندارم.

کمی به Propertie های DataAdapter دقت کنید ، Connection را پیدا خواهید کرد. هر کدوم این آبجکت ها همون طور که omid_Ahmadi در پست قبلی اشاره کردند کاربردی خاص دارند و در اون کاربرد خاص بهتر از بقیه عمل میکنند.
1. Connection برقرار کننده اتصال با منبع داده.
2. Command محلی برای قرار دادتن دستورات SQL و اجرای آنها
3. DataAdapter این آبجکت با استفاده از شی Commnad و Connection عملیاتی را به صورت خودکار انجام میدهد.
4. DataReader نگهداری خروجی شی Command : دسترسی به صورت ترتیبی و فقط خواندنی
5. DataSet نگهداری خروجی شی Commnad : دسترسی غیر ترتیبی و خواندن و نوشتن
اشیا زیر در شکل دادن ساختار Dataset نقش دارند.
DataTable
DataRow
DataColumn
DataRelation

به طور کلی هیچ شی داده ای نمی تواند بدون Connection به منبع داده متصل شود و نمی تواند بدون Command دستوری را اجرا کند. اگر هم این کارها را انجام میدهدبه صورت داخلی این اشیا را دارد.

plato
چهارشنبه 16 خرداد 1386, 13:53 عصر
کمی به Propertie های DataAdapter دقت کنید ، Connection را پیدا خواهید کرد. هر کدوم این آبجکت ها همون طور که omid_Ahmadi در پست قبلی اشاره کردند کاربردی خاص دارند و در اون کاربرد خاص بهتر از بقیه عمل میکنند.
1. Connection برقرار کننده اتصال با منبع داده.
2. Command محلی برای قرار دادتن دستورات SQL و اجرای آنها
3. DataAdapter این آبجکت با استفاده از شی Commnad و Connection عملیاتی را به صورت خودکار انجام میدهد.
به طور کلی هیچ شی داده ای نمی تواند بدون Connection به منبع داده متصل شود و نمی تواند بدون Command دستوری را اجرا کند. اگر هم این کارها را انجام میدهدبه صورت داخلی این اشیا را دارد.

پس با وجود اشیاء Command و connection، به dataAdapter چه نیازی هست؟
(منظورم اینه که یا dataAdapter به تنهایی وجود داشته باشه و یا connection و command)

حامد مصافی
چهارشنبه 16 خرداد 1386, 14:22 عصر
پس با وجود اشیاء Command و connection، به dataAdapter چه نیازی هست؟
(منظورم اینه که یا dataAdapter به تنهایی وجود داشته باشه و یا connection و command)



1. ولی با dataAdapter هم بدون connection میشه متصل شد. به این دستور توجه کنید :
OleDbDataAdapter custDA = new OleDbDataAdapter(mySelectText, myConnString)
به جای استفاده از یک شئ connection از یک رشته ی ConnectionString استفاده شده است.
در این حالت یک connection در داخل dataadapter ایجاد می شود و رشته myConnString fi عنوان پارامتر سازنده بدان ارسال می شود.
در هر صورت نیاز به شی اتصال دارید مگر اینکه انتظارات شما از خصوصیات آن کم باشد که در اینصورت با ارسال رشته اتصال می توانید ساخت آن را به DataAdapter محول کنید.




2. از DataAdapter هم برای اجرای query میتوان استفاده کرد.
دقیقاً مسئله فوق در این مورد هم صرق می کند.
در صورتی که نیاز به یک پرس و جوی پیشرفته (با پارامتر ها یا ...) داشته باشید می توانید یک شی Command ایجاد کنید. در غیر اینصورت ارسال رشته پرس و جو کفایت می کند

موفق باشید

plato
چهارشنبه 16 خرداد 1386, 14:51 عصر
پس بر اساس مواردی که دوستان اظهار کردند نتیجه میگیریم که بدون dataAdapter هم همه ی اعمال قابل اجراست(با استفاده از command و connection). و دلیل وجود dataAdapter فقط سهولت در انجام کار است. درست میگم؟

Alireza_Salehi
چهارشنبه 16 خرداد 1386, 17:18 عصر
پس بر اساس مواردی که دوستان اظهار کردند نتیجه میگیریم که بدون dataAdapter هم همه ی اعمال قابل اجراست(با استفاده از command و connection). و دلیل وجود dataAdapter فقط سهولت در انجام کار است. درست میگم؟
بله قابل اجراست ،
DataAdapter به صورت داخلی 4 تا شی Command برای Delete , Update , Insert , Select دارد و بسیاری متد های دیگر که هنگام پر کردن دیتاست ها خیلی کارها رو اتوماتیک انجام میده و کار برنامه نویسی را راحت می کند.

یک کتاب ADO.NET بخونید فلسفه وجودی هر کدوم رو متوجه میشید.