繁体   English   中英

.NET数据库连接池发生错误?

[英].NET database connection pooling error occurred?

我已经在web.config文件中创建了连接字符串。

<connectionStrings>
  <add name="Test_registration" 
     connectionString="Data Source=DOTNET\SA;Initial Catalog=Test2009;User ID=trainee;Password=trainee123" 
     providerName="System.Data.SqlClient"/>
</connectionStrings>

并在CS文件中创建一个用于打开连接的构造函数。

public main_connection()
{
    sql_conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Test_registration"].ConnectionString);
    sql.conn.open();
}

但是我在服务器上的程序运行时收到连接池错误。

谁能告诉我应该在哪里关闭连接? 在我的项目CS文件的web.config文件中,我在哪里打开连接?

我只想一次写一次close()语句,因为我只能一次启动连接。

在此处设置连接字符串。

然后使用以下代码。 (sql_conn是连接对象的名称)

try { sql_conn.Open(); }
            catch (Exception)
            {
                if (sql_conn.State != ConnectionState.Closed)
                {
                    sql_conn.Close();
                    sql_conn.Open();
                }
            }

我认为您应该打开一个连接,执行您的sql语句并立即关闭该连接。 提供者负责连接池。

就像Raj所说的那样,我建议您在有要运行的语句时打开连接,然后再关闭它-这是执行数据库查询的最常用方法。

话虽如此,如果您希望始终打开连接,则应在程序退出时关闭它(或者在网站的情况下,请在Global.Asax中关闭它,在应用程序上关闭,卸载等(可以记得有多少,因为我从来没有这样

您的web.config不会自动关闭!

综上所述,我仍然认为您应该考虑这样的构造(伪代码):

using (var conn = OpenConnection())
{
    using (var cmd = CreateCommand(conn))
    {
        RunQuery();
    }
}

当将Connection和Command放入using语句时,它们将被正确关闭(包括连接),并且不会冒着代码异常的风险在数据库服务器上建立无效连接的风险。

显然,使用try-finally结构可以做到这一点,只是更漂亮:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM