PDA

View Full Version : استفاده از SQLDATAREADER در TRY,CATCH,FINALLY.مشکل فوری



ramin_hashemi
سه شنبه 04 مهر 1391, 12:06 عصر
با عرض سلام
من در یک پروژه بجای استفاده از dataset از sqldatareader استفاده کردم و بعد از آپلود سایت با ارور زیر مواجه شدم:

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
بعد متوجه شدم که مشکل از نبستن connection میباشد بخاطر همین تمامی دستورات را در try,catch,finally قرار دردم و در قسمت finally کانکشن مربوطه را close کردم.ولی باز با ارور زیر مواجه شدم:
Invalid attempt to call Read when reader is closed.
بخاطر اینکه datareader نیاز به Connection فعال داره.حالا سوال من از اساتید گرامی اینه که چیکار کنم که هم با ارور اول مواجه نشم یعنی connection هام بسته باشسه و هم بتونم از datareader استفاده کنم؟؟؟؟
ممنون از توجهتون

saeed_sho
سه شنبه 04 مهر 1391, 19:18 عصر
قبل از دیتاریدر کانکشن رو باز کن بعد هم کانکشن رو ببند
Private Sub Fill_Repeater()
Try
Dim conn As New OleDbConnection(ConfigurationManager.ConnectionStr ings("ConnectionString").ConnectionString)

Dim cmd As New OleDbCommand()
cmd.Connection = conn
cmd.CommandText = "amar_select"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("Today", Now)
Dim da As New OleDbDataAdapter(cmd)

'باز بودن کانکشن را کنترل میکند
If (conn.State = ConnectionState.Closed) Then conn.Open()

Dim dt_visitors As New DataTable()

If dt_visitors.Rows.Count > 0 Then dt_visitors.Rows.Clear()

da.Fill(dt_visitors)
conn.Close()

rpt_VisitorsAmar.DataSource = dt_visitors
rpt_VisitorsAmar.DataBind()
Catch ex As Exception
End Try
End Sub