c# - InvalidOperationException 连接未关闭。连接的当前状态是打开的

标签 c# visual-studio-2010 tsql

为什么这段代码抛出无效操作异常?

private SqlCommand cmd; // initialized in the class constructor

public void End(string spSendEventNotificationEmail) {
  try {
    cmd.CommandText = spSendEventNotificationEmail;
    cmd.Parameters.Clear();
    cmd.Parameters.Add("@packetID", SqlDbType.Int).Value = _packetID;
    cmd.Parameters.Add("@statusID", SqlDbType.Int).Value = _statusID;
    cmd.Parameters.Add("@website", SqlDbType.NVarChar, 100).Value = Tools.NextStep;
    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
  } finally {
    cmd.Connection.Close();
    cmd.Parameters.Clear();
    cmd.Dispose();
  }
  endCall = true;
}

InvalidOperationException

最佳答案

您试图打开一个已经打开的连接,这会导致异常。

方案一(推荐):

检查您的代码,检查打开cmd.Connection 连接的所有部分,并确保它始终正确关闭。

解决方案 2(快速修复):

行前

cmd.Connection.Open();

添加以下检查/清理代码:

if (cmd.Connection.State == ConnectionState.Open)
{
    cmd.Connection.Close();
}

关于c# - InvalidOperationException 连接未关闭。连接的当前状态是打开的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053731/

相关文章:

c# - 为什么在 asp.net MVC Controller 中需要显式 Dispose() 方法?谁能解释它的复杂性? (特定于 asp.net)

.net - Visual C++ 秒表

asp.net - 为什么我的嵌套母版页丢失了 CSS 格式?

sql - 左连接位于左连接之上

SQL Server : How do you remove punctuation from a field?

c# - 如何配置工厂来生成对象?

c# - PowerShell 通过 C# 控制台输出不同

葡萄牙语的 C# 日期时间格式

visual-studio-2010 - 在 Visual Studio 2010 上调试时 IIS 超时

tsql - 如何在非数字字段上查询 'between' 数字数据?