在转发器内打开/关闭数据库连接

时间:2012-09-27 21:23:45

标签: asp.net vb.net repeater

我有一个转发器,它在每次迭代中从多个表中获取数据。现在我在进入OnItemDataBound事件并在事件完成之前关闭它时立即打开连接。这意味着在我的情况下,连接打开和关闭超过1000次。这是正确的方法吗?还有其他方法吗?

我的代码基本上看起来像这样

 Protected Sub myRepeater_OnItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs)
    Try
        mycon.open()
        Dim RowView As DataRowView = e.Item.DataItem

        //fetch data from 5 different tables using the data from the datasource (dataset)

        mycon.close()
    Catch ex As Exception

    End Try
End Sub

1 个答案:

答案 0 :(得分:1)

实际上,最好在尽可能小的范围内立即打开/关闭连接,因为当您使用连接池时,您没有连接物理连接。您只需在关闭连接时使连接可用。

但除此之外,为什么你在ItemDataBound中使用了一个连接?>转发器已经数据绑定后DataItem应该包含您需要的所有内容。如果你想要DataBind子控件如DropDownLists或嵌套转发器,是的,这是正确的方法(好吧,你应该更好地将它封装在方法中)。

您应该使用using-statement来处置(关闭)连接:

Dim rowView As DataRowView = e.Item.DataItem
Dim someDropDown = DirectCast(e.Row.FindControl("DropDownList1"), DropDownList)
Using myCon = New SqlConnection(connectionString)
    Try
        mycon.Open()
        'databind the dropdown...'
    Catch ex As Exception
        'log exception'
    End Try
End Using