PDA

View Full Version : سوال: استفاده از CommandBehavior.CloseConnection



mehran63
یک شنبه 15 بهمن 1391, 16:48 عصر
سلام
کد زیر چه کاری انجام میدهد
myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection) ;

alihassanabadi
دوشنبه 16 بهمن 1391, 08:58 صبح
سلام
شما هنگامی که از SqlDataReader استفاده میکنید برای اجرا شدنش و استفاده بعد از اجرا
نیاز به یک ارتباط باز دارید یعنی حتما باید ارتباط با بانک اطلاعاتی باز باشد تا بتونید از دیتاریدر استفاده کنید برعکس دیتا ست
با مشخص کردن CommandBehavior.CloseConnection هنگام اجرای ExecuteReader ارتباط با بانک قطع میشه
در کل دلیل استفاده از این اینه که شما اجازه داشته باشید خارج از محدوده این کد (بیرون بلاکش) بتونید از myReader استفاده کنید
.

mehran63
سه شنبه 17 بهمن 1391, 21:57 عصر
متشکر دوست عزیز ولی میتوان برای این کار از متد Close() در آبجکت Connection استفاده کرد (conn.colse())
این که در چه موقعی از این روش استفاده میشه را خودم پیدا کردم
زمانی کاربرد دارد که تا زمان رسیدن به انتهای مجموعه داده ای که در Read ریختیم، در بین آن حرکت کنید که در این هنگام آبجکت Read ارتباط را به طور خودکار می بندد.

alihassanabadi
چهارشنبه 18 بهمن 1391, 14:27 عصر
متشکر دوست عزیز ولی میتوان برای این کار از متد Close() در آبجکت Connection استفاده کرد (conn.colse())
پس شما هنوز نمیدونید کی باید از CommandBehavior.CloseConnection استفاده کنید

mehran63
چهارشنبه 18 بهمن 1391, 17:00 عصر
متوجه منظورتون نشدم

alihassanabadi
چهارشنبه 18 بهمن 1391, 17:27 عصر
فرض کنید از دیتا ریدر در یک کلاس استفاده کردید
حالا این کلای یک متد داره که دیتا ریدر رو برمیگردونه چون نیاز به ارتباط باز داره اگه از یک کلاس دیگه به این متد دسترسی داشته باشیم باعث خطا میشه
در نتیجه از CommandBehavior.CloseConnection استفاده میشه

publicSqlDataReader CustomerRead(int CustomerID) {
//create connection and command, open connection
return myCommand.ExecuteReader(CommandBehavior.CloseConne ction);
}


و

//client code
SqlDataReader myReader = CustomerRead(10248);
//read some data
myReader.Close(); // reader and connection are closed


بدرود.

mehran63
چهارشنبه 18 بهمن 1391, 19:36 عصر
با سلام
عرایض بنده درست است به منبع زیر مراجعه فرمایید و متن مربوط به Using the DataReader Object را مطالعه بفرمایید.
http://books.google.com/books?id=i9pvEZq39UYC&lpg=PP1&dq=professional%20asp.net%204%20in%20c_and_vb&pg=SA7-PA66#v=onepage&q&f=false

فرمایشات شما نیز صحیح می باشد بر طبق منبع زیر. متن مربوط به عنوان CommandBehavior را مطالعه بفرمایید
http://books.google.com/books?id=2wg5LCKuChcC&lpg=PA295&ots=Hjy69LsdHJ&dq=why%20use%20%20CommandBehavior.CloseConnection&pg=PA295#v=onepage&q=why%20use%20%20CommandBehavior.CloseConnection&f=false