نمایش نتایج 1 تا 19 از 19

نام تاپیک: تفاوت بین IDbConnection و SqlConnection

  1. #1
    کاربر دائمی آواتار mehrdad201
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شمال ایران (مازندران)
    پست
    587

    تفاوت بین IDbConnection و SqlConnection

    سلام

    خواستم بپرسم تفاوت بین این دو ابجکت چیست؟ SqlConnection و IDbConnection

    هر کدوم چه مزایا و معایبی دارند ؟ و در حالت کلی کدوم بهتر هست؟

  2. #2
    IDbConnection یک Interface هست که شمای کلی از متدهایی که یک Connection برای یک Provider فراهم می کنه رو ارائه میده.
    استفاده از این دست اینترفیس ها برای مواقعی خوب هست که نیاز به اتصال به چند نوع پایگاه داده ی مختلف رو داشته باشی.
    در حقیقت برای ایجاد Custom Provider
    روش تمیز این کار بدین گونه است که یک متد عمومی برای تمامی Provider ها تعریف می کنی و برای استفاده از این متد، Provider مخصوص خودش رو فراخوانی میکنی.
    در ذیل، یک تکه کد ساده برای بازیابی داده ها از جدول myTable که با استفاده از Interface ها پیاده سازی شده میبینی:

    private void GetData(IDbConnection Cnn, IDbDataAdapter DA)
    {
    IDbCommand Cmd = Cnn.CreateCommand();
    Cmd.CommandText = "SELECT * FROM myTable";
    DA.SelectCommand = Cmd;
    DataSet DS = new DataSet();
    DA.Fill(DS, "myTable");
    GridView.DataSource = DS.Tables["myTable"].DefaultView;
    GridView.DataBind();
    }

    در روال فوق نوع Provider مشخص نشده.
    فرض کن که من قصد دارم از روال فوق برای بازیابی داده ها از یک دیتابیس SQL Server استفاده کنم.
    به شکل زیر عمل میکنم:

    SqlConnection Cnn = new SqlConnection("myConnectionString");
    SqlDataAdapter DA = new SqlDataAdapter();
    GetData(Cnn, DA);

    و یا برای اتصال به یک دیتابیس از نوع OLEDB:

    OleDbConnection Cnn = new OleDbConnection("myConnectionString");
    OleDbDataAdapter DA = new OleDbDataAdapter();
    GetData(Cnn, DA);

    موفق باشید.

  3. #3
    کاربر دائمی آواتار mehrdad201
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شمال ایران (مازندران)
    پست
    587
    جناب راد ممنون

    پس با این توضیحی که دادید چون من فقط از دیتابیس sqlserver استفاده می کنم همون sqlcommand تنها کافیه و نیازی نیست که از idbcommand استفاده بشه ؟

  4. #4

  5. #5
    کاربر دائمی آواتار mehrdad201
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شمال ایران (مازندران)
    پست
    587
    یک سوال دیگه هم داشتم (نخواستم تاپیک جدا بزنم)

    در بعضی مثال ها دیدم که مثلا برای خوندن اطلاعات از یه تیبل دیتابیس و انتصابش به یه کنترل مثل لیست ویو میان اطلاعات رو از دیتابیس میخونن و اونو میریزن در یه دیتاست
    بعد هم دیتاست. مثل همین کاری که شما کردی.

    میتونید به من بگید بین دیتاست و دیتاریدر کدوم یک برای همچین کاری (مثلا پر کردن دراپ دان لیست ) بهتره ؟؟؟

  6. #6
    کاربر دائمی آواتار miladr
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    وقتی تو نت هستم همه جا هستم و هیچ جا نیستم.
    پست
    472
    البته با اجازه.
    فکر کنم دیتاریدر بهتره واسه پر کردن dropdown چون کلا برای کارهای فقط خواندنی بهنره از datareader استفاده بشه

  7. #7
    بستگی به معماری برنامت داره.
    اگر کیلویی برنامه مینویسی از DataSet استفاده کن.
    البته اگر لایه ای کار می کنی باید از Disconnected Object استفاده کنی. مثل Dataset
    البته امروزه در برنامه های شی گرا دیگه از DataSet استفاده نمیشه.

    موفق باشید.
    آخرین ویرایش به وسیله Behrouz_Rad : سه شنبه 05 خرداد 1388 در 08:49 صبح

  8. #8
    کاربر دائمی آواتار mehrdad201
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شمال ایران (مازندران)
    پست
    587
    راستش به همون روش معماری 3 لایه کار می کنم که دوستان در این فروم هم معرفیش کردند. توی نمونه هایی هم که دیدم معمولا از همین dataset استفاده شده...

    سوال بود برام. آقای راد اینکه گفته شده datareader سریع تر از dateset هست؟ آیا درسته و اگر درسته پس اگر برای اعمالی مثل پرکردن یک لیست ویو از datareader استفاده بشه آیا باز هم باعث کیلویی شدن برنامه و پایین اومدن سطح کار خواهد شد؟

  9. #9
    کاربر دائمی آواتار Neo Persian
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    طهران
    سن
    41
    پست
    171
    Datareader به نظرم یه مشکلی داره اونم اینه که تا وقتی که میخواین اطلاعات رو ازش بخونید باید به DB کانکت بمونید!

  10. #10
    کاربر دائمی آواتار mehrdad201
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شمال ایران (مازندران)
    پست
    587
    مطمئنید ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ اگه اینطوری باشه جالب نیست!

  11. #11
    کاربر دائمی آواتار Neo Persian
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    طهران
    سن
    41
    پست
    171
    امتحانش کنید! قبل از اینکه از datareader اطلاعات رو بگیرید connection رو close کنید!

  12. #12

    نقل قول: تفاوت بین IDbConnection و SqlConnection

    اگر کیلویی برنامه مینویسی از DataReader استفاده کن.
    کیلویی؟؟؟؟؟دلیل؟منطق؟چرا؟

  13. #13

    نقل قول: تفاوت بین IDbConnection و SqlConnection

    مهمترین دلیلش اینه که DataReader استفاده ی بهینه تری از حافظه می کنه. اسکات میشل مقاله ای در این زمینه چندین سال پیش نوشت. در سایت 4guysfromrolla.com می تونی پیداش کنی.

    موفق باشید.

  14. #14

    نقل قول: تفاوت بین IDbConnection و SqlConnection

    مهمترین دلیلش اینه که DataReader استفاده ی بهینه تری از حافظه می کنه.
    ممنون که پاسخ دادین.
    حالا استفاده ی بهینه از حافظه مگه بده؟

  15. #15

    نقل قول: تفاوت بین IDbConnection و SqlConnection

    نقل قول نوشته شده توسط aminnk
    حالا استفاده ی بهینه از حافظه مگه بده؟
    یعنی چی؟..

  16. #16
    کاربر دائمی
    تاریخ عضویت
    خرداد 1382
    محل زندگی
    تهران
    پست
    424

    نقل قول: تفاوت بین IDbConnection و SqlConnection

    نقل قول نوشته شده توسط Behrouz_Rad مشاهده تاپیک
    مهمترین دلیلش اینه که DataReader استفاده ی بهینه تری از حافظه می کنه. اسکات میشل مقاله ای در این زمینه چندین سال پیش نوشت. در سایت 4guysfromrolla.com می تونی پیداش کنی.

    موفق باشید.
    این مذمت DataReader بود یا تعریف از اون؟؟؟

  17. #17

    نقل قول: تفاوت بین IDbConnection و SqlConnection

    یعنی چی؟..
    منظورم اینه:
    شما گفتین اگه می خواین کیلویی برنامه بنویسی می تونی از datareader استفاده کنی چون .......

    حالا یعنی هر کسی از DataReader استفاده کرد یعنی کیلویی نوشته؟اخه من تو یه مقاله خوندم استفاده از DaTaReader بهتره تا DataSet (البته نه همه جا و کامل شرح داده بود که کجا استفاده بشه)

  18. #18

    نقل قول: تفاوت بین IDbConnection و SqlConnection

    آها! اشتباه تایپی بوده! به جای DataReader باید مینوشتم DataSet. اصلاحش کردم.
    DataReader در زمانی که فقط نیاز به خودندن داده ها داری خوبه.
    DataSet برای Win App و برای زمانی خوبه که علاوه بر خوندن داده ها، نیاز هست که به صورت Offline با اونها کار کنی.
    الان دیگه در برنامه های شی گرا از DataSet استفاده نمیشه.
    در حالت ORM، کلاس تو معرف جدول تو و Property های تو معرف فیلدهای جدولت هستند.
    Entity ها باید بین لایه ها پاس داده بشن.

    موفق باشید.

  19. #19
    کاربر دائمی آواتار Neo Persian
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    طهران
    سن
    41
    پست
    171

    نقل قول: تفاوت بین IDbConnection و SqlConnection


تاپیک های مشابه

  1. SqlConnection
    نوشته شده توسط desinger2007 در بخش برنامه نویسی مبتنی بر Microsoft .Net Framework
    پاسخ: 4
    آخرین پست: شنبه 24 آذر 1386, 18:15 عصر
  2. مشکل :بسته شدن sqlconnection به صورت اتوماتیک
    نوشته شده توسط ir_ali_s در بخش VB.NET
    پاسخ: 0
    آخرین پست: یک شنبه 24 اردیبهشت 1385, 17:31 عصر
  3. SQLconnection
    نوشته شده توسط هامان در بخش VB.NET
    پاسخ: 1
    آخرین پست: یک شنبه 30 بهمن 1384, 09:31 صبح
  4. باز کردن و بستن SqlConnection
    نوشته شده توسط zehs_sha در بخش VB.NET
    پاسخ: 5
    آخرین پست: یک شنبه 18 آبان 1382, 11:51 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •