SqlConnection状态以一种奇怪的方式改变

时间:2013-06-12 07:26:08

标签: c# sqlconnection

我是我的SqlConnection:

        this._sqlConnection = new SqlConnection(sCxn);
        this._sqlConnection.StateChange += new StateChangeEventHandler(_sqlConnection_StateChange);

这是捕获连接状态更改事件的方法:

    void _sqlConnection_StateChange(object sender, StateChangeEventArgs e)
    {
        this._previousState = e.OriginalState;
        this._connectionState = e.CurrentState;
        log.WriteLog("Connection change status: previous " + e.OriginalState.ToString() + ", current " + e.CurrentState.ToString(), log.INFO);
    }

当我在正常的应用活动期间切断连接时,我得到了方法的正确答案:

连接更改状态:上一个打开,当前已关闭

但是当我重新激活连接(启动数据库服务)时,我开始得到这个事件序列:

  • 09.10.41:连接更改状态:上一个已关闭,当前打开
  • 09.10.41:连接更改状态:上一个打开,当前已关闭
  • 09.10.51:连接更改状态:上一个已关闭,当前打开
  • 09.10.51:连接更改状态:上一个打开,当前已关闭
  • 09.11.01:连接更改状态:上一个已关闭,当前打开
  • 09.11.01:连接更改状态:上一个打开,当前已关闭
  • 09.11.12:连接更改状态:上一个已关闭,当前打开
  • 09.11.12:连接更改状态:上一个打开,当前已关闭

该应用程序可以查询数据库,但连接状态保持关闭状态。

我做错了什么?

提前致谢, 塞缪尔

1 个答案:

答案 0 :(得分:0)

请阅读有关连接池的信息。这是学习如何充分利用它的好参考: http://www.connectionstrings.com/Articles/Show/connection-pooling

从链接中复制:

  • 确保您的连接每次都使用相同的连接字符串。 连接池仅在连接字符串相同时才有效。 如果连接字符串不同,则将建立新连接 打开。
  • 只在您需要时才打开连接,而不是之前。
  • 使用完毕后立即关闭连接。
  • 如果未使用连接,请勿打开连接。
  • 确保在关闭连接之前删除任何临时对象。
  • 在关闭连接之前,请务必关闭所有用户定义的事务。
  • 如果要利用连接,请不要使用应用程序角色 池。