Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can´;无法打开数据库连接,因为它已打开_C#_Sql Server - Fatal编程技术网

C# Can´;无法打开数据库连接,因为它已打开

C# Can´;无法打开数据库连接,因为它已打开,c#,sql-server,C#,Sql Server,我的c#代码: 错误来自: 中发生“System.InvalidOperationException”类型的异常 System.Data.dll,但未在用户代码中处理 其他信息:连接未关闭。这个 连接的当前状态为打开 连接没有关闭。连接的当前状态为“打开” 错误信息本身非常清楚。打开连接时,应检查当前状态: if(c.State != ConnectionState.Open) c.Open(); 在Form_Load()事件中打开连接,如下所示- SqlConnection c

我的c#代码:

错误来自:

中发生“System.InvalidOperationException”类型的异常 System.Data.dll,但未在用户代码中处理

其他信息:连接未关闭。这个 连接的当前状态为打开

连接没有关闭。连接的当前状态为“打开”

错误信息本身非常清楚。打开连接时,应检查当前状态:

if(c.State != ConnectionState.Open)
  c.Open();

在Form_Load()事件中打开连接,如下所示-

    SqlConnection c = new SqlConnection();
    private void Form1_Load(object sender, EventArgs e)
    {
        if (c.State == ConnectionState.Closed)
        {
            c.Open();
        }            
    }

让我猜猜-当您调用
open()
时,连接已经打开。请发布完整的异常消息,包括调用堆栈,并提及发生错误的确切行。我怀疑,如果您调试了代码,您会立即发现错误:没有理由长时间保持连接打开,事实上,如果您不十分小心,它将损害您的应用程序,并可能导致事务和锁升级。每次需要时创建一个新连接。ADO.NET的连接池将确保您不必每次都创建一个新连接,因为您没有使用任何wildcards@ZoharPeled像@UserName这样的
没有什么问题,参数值可以包含通配符。当然,这是假设删除参数为
%
的所有用户是acceptable@PanagiotisKanavos虽然是真的,但我不认为这里是这样。更好的选择是在需要时创建连接,但连接已关闭checked@OzCohen你怎么查的?如果此条件起作用,则表示连接仍然存在open@OzCohen他是对的。机器不能撒谎:)。
    SqlConnection c = new SqlConnection();
    private void Form1_Load(object sender, EventArgs e)
    {
        if (c.State == ConnectionState.Closed)
        {
            c.Open();
        }            
    }