在SQL中关闭连接 - 超时

时间:2013-07-09 15:53:19

标签: .net

我有一个很大的问题,我的某个网站无法加载大多数时间。不幸的是我无法上传图片。问题陈述如下

  

从池中获取连接之前经过的超时时间。这可能已经发生,因为所有使用的池连接和达到最大池大小。

我得到一个突出显示的第14行:upcmd.Connection.Open()。错误继续。

我根本不是专家所以我到目前为止所做的研究在webconfig中<add name="ConnectionString" connectionString="Data Source=yianniscy.db.7015338.hostedresource.com;initial catalog=xxxxxxx;User id=xxxxxx;Password=xxxxxxx;**Max Pool Size=100**" />添加最大池大小的内容

问题仍然存在,尽管此应用程序由一个人使用,之前从未遇到此问题。一旦我的托管服务提供商进行升级,这就开始了。目前,我知道连接仍然是开放的,需要关闭。问题是我不知道放什么以及放在哪里。如果有人可以指导我到底在哪里,我会很感激。

Partial Class Default2
Inherits System.Web.UI.Page

Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
    Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)

    Using upcmd As New SqlCommand("SELECT login FROM Xuser_tab WHERE name=@logname", conn)

        upcmd.Parameters.Add(New SqlParameter("@Login_name", TextBox1.Text))
        upcmd.Connection.Open()
        Dim password_temp As String

        Try
            Dim dr As SqlDataReader = upcmd.ExecuteReader()

            If dr.Read Then
                password_temp = dr.Item(0)

                If password_temp = TextBox2.Text Then
                    Response.Redirect("~/Controlpanel.aspx")

                Else


                End If
                Image2.Visible = True
                Label1.Visible = True

            End If

2 个答案:

答案 0 :(得分:1)

UsingEnd Using之后处理对象,因此在离开此构造时将关闭连接。

Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
      Using upcmd As New SqlCommand("SELECT login FROM Xuser_tab WHERE name=@logname", conn)

        // @logname != @Login_name..
        upcmd.Parameters.Add(New SqlParameter("@Login_name", TextBox1.Text)) 
        upcmd.Connection.Open()
        Dim password_temp As String

        Try
           Dim dr As SqlDataReader = upcmd.ExecuteReader()

           If dr.Read Then

           // code omitted

        End Using
conn.Close() // Optional
End Using
// Here will conn be disposed and connection closed

An explanation Close()Dispose()之间的差异。 Dispose()是在End Using后面调用的方法。

答案 1 :(得分:0)

我确定您的代码中存在问题,请检查以下内容:

  • 连接已关闭?
  • 您是否在数据库连接对象周围使用?
  • 您的错误处理和连接如何关闭?

对于单个用户网站,您不需要大型连接池,通常一次只使用一个连接。通过一些代码,我们可以更具体。