PDA

View Full Version : DataTable.Load(DataReader) vs DataAdapter



jaza_sa
شنبه 18 آبان 1387, 12:01 عصر
کدامیک از کارایی بالاتر و سرعت بیشتر برخوردار است ؟
* cmd یک SqlCommand هست با connection مربوطه و تنظیمات خاص خود


DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader("select * from ..."));یا


DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(dt);باتشکر

محمدامین شریفی
شنبه 18 آبان 1387, 23:25 عصر
کدامیک از کارایی بالاتر و سرعت بیشتر برخوردار است ؟
* cmd یک SqlCommand هست با connection مربوطه و تنظیمات خاص خود


DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader("select * from ..."));یا


DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(dt);باتشکر
سلام رفیق
به نظر من هر object ای که تولید میشه یک فضایی رو اشغال میکنه
و فرقی نمیکنه که شما کدها رو تو هم بنویسی،یا مرتب بنویسید
شما در اولی از ExecuteReader استفاده کرده ای و در دومی معلوم نیست از چی استفاده کرده اید.اگر تو memory management تفاوتی باشد در همون استفاده مناسب از ExecuteReader یا executescaler یا excecutenonquery هست.
--------
البته نظر شخصی من هست،اساتید نظر بدهید

با سپاس

odiseh
یک شنبه 19 آبان 1387, 10:24 صبح
سلام
من توی2005 MSDN نگاه کردم اصلا کلاس DataTable متدی تحت عنوان Load نداره !

jaza_sa
یک شنبه 19 آبان 1387, 10:35 صبح
سلام رفیق
به نظر من هر object ای که تولید میشه یک فضایی رو اشغال میکنه
و فرقی نمیکنه که شما کدها رو تو هم بنویسی،یا مرتب بنویسید
شما در اولی از ExecuteReader استفاده کرده ای و در دومی معلوم نیست از چی استفاده کرده اید.اگر تو memory management تفاوتی باشد در همون استفاده مناسب از ExecuteReader یا executescaler یا excecutenonquery هست.
--------
البته نظر شخصی من هست،اساتید نظر بدهید

با سپاس

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

قسمت مهم کد اول : dt.Load
و قسمت مهم کد دوم : da.Fill

یعنی : تفاوت کارایی بین دستورات بالا برای پر کردن یک DataTable

jaza_sa
یک شنبه 19 آبان 1387, 10:43 صبح
سلام
من توی2005 MSDN نگاه کردم اصلا کلاس DataTable متدی تحت عنوان Load نداره !
من از MSDN 2008 استفاده میکنم !!!

majid325
یک شنبه 19 آبان 1387, 15:28 عصر
اگه كارايي رو سرعت معني كنيد.
خوب ExecuteReader فقط كارايش نكته خاص به وجود آمدنش هست.

jaza_sa
یک شنبه 19 آبان 1387, 19:16 عصر
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=95318&wa=wsignin1.0