PDA

View Full Version : بستن DataReader که باز مانده است؟



hamidnet
چهارشنبه 14 مرداد 1388, 00:00 صبح
سلام


فرض کنید در جایی از برنامه از DataReader استفاده شده و در هنگام اجرا به دلایلی قبل از بسته شدن DataReader جاری برنامه با اشکال (Error) مواجه شده، در این صورت اگر درجای دیگه ای از برنامه نیاز به استخراج اطلاعات از بانک باشه با پیام خطایی مواجه میشیم که میگه اتصال توسط دیتاریدر قبلی همچنان برقراره! سوال اینجاست که چطور میشه این دیتاریدر رو بست ؟

یه راهی که من سراغ دارم اینه که در ConnectionString از عبارت MultipleActiveResultSets=True استفاده بشه، در اینصورت برنامه دچار خطا نمیشه ولی دیتاریدر قبلی همچنان باز میمونه تا توسط SQLServer بسته بشه!

چطور میشه این دیتاریدر رو بست ؟

armangara
چهارشنبه 14 مرداد 1388, 00:14 صبح
در هنگام تعریف دیتاریدر می تونید از این کد استفاده کنید


If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim reader As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

hamid1988
چهارشنبه 14 مرداد 1388, 00:15 صبح
DataReaderName.Close()
DataReaderName: نام دیتا ریدرت!

behnam-s
پنج شنبه 15 مرداد 1388, 23:29 عصر
در هنگام تعریف دیتاریدر می تونید از این کد استفاده کنید


If con.State = ConnectionState.Closed Then
con.Open()
EndIf
Dim reader As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)


این کد باعث میشه که بعد از بستن DataReader کانکشنی که از اون استفاده می کرده هم بسته بشه. ولی وقتی که DataReader باز مونده استفاده از این کد چه مشکلی رو حل می کنه؟

mtaboy
پنج شنبه 15 مرداد 1388, 23:48 عصر
شما بعد ازاینکه کارت با دیتا ریدر تموم شد اونو ببند یا برای اطمینان بیشتر کد رو تو


try
{

}
catch (Exception)
{

throw;
}
finally
{
dmydatareader.close();
}


کد بسته شدن دیتاریدر رو تو finaly هم بنویس چون تحت هر شرایطی اجرا میشه

hamidnet
شنبه 17 مرداد 1388, 00:28 صبح
با تشکر از راهنمایی شما عزیزان
من همیشه تو برنامه از try ... finally استفاده می کنم. تو قسمتی از برنامه استفاده نکردم و برحسب اتفاق دیتاریدر باز موند، حالا سهوا یا عمدا این اتفاق افتاده آیا واقعا راهی برای بستنش وجود نداره؟!
نکاتی که شما دوستان مطرح کردید حکم پیشگیری رو داره، حالا اگه چنین مشکلی پیش اومد درمانش چیه؟ :متفکر: