C# &引用;ExecuteReader:连接属性尚未初始化;

C# &引用;ExecuteReader:连接属性尚未初始化;,c#,asp.net,C#,Asp.net,我是一个使用Asp.NETMVC5的初学者,我目前正在做我的项目 它指的是“var reader=cmd.ExecuteReader();” 这是我的密码: public bool IsValid(string username, string password) { string conString = "Server= EJ ; Database=OnlineShopDb ; Integrated Security=SSPI"; SqlCommand cmd = new S

我是一个使用Asp.NETMVC5的初学者,我目前正在做我的项目

它指的是“var reader=cmd.ExecuteReader();” 这是我的密码:

public bool IsValid(string username, string password)
{
    string conString = "Server= EJ ; Database=OnlineShopDb ; Integrated Security=SSPI";

    SqlCommand cmd = new SqlCommand("Select * from dbo.UserTb where UserName=@UserName and PassWord=@PassWord");
    SqlConnection con = new SqlConnection(conString);

    cmd.Parameters.AddWithValue("@UserName", SqlDbType.VarChar).Value = username;
    cmd.Parameters.AddWithValue("@PassWord", SqlDbType.VarChar).Value = password;
    con.Open();
    var reader = cmd.ExecuteReader();

    if (reader.HasRows)
    {
        reader.Dispose();
        cmd.Dispose();
        return true;
    }
    else
    {
        reader.Dispose();
        cmd.Dispose();
        return false;
    }
}

使用语句将连接包装在
中,然后将其作为
SqlCommand
构造函数的第二个参数传入:

var query = "Select * from whatever";
using(var con = new SqlConnection(conString))
using(var cmd = new SqlCommand(query, con))
{
    con.Open();
    // etc
}

使用
语句将连接包装在
中,然后将其作为
SqlCommand
构造函数的第二个参数传入:

var query = "Select * from whatever";
using(var con = new SqlConnection(conString))
using(var cmd = new SqlCommand(query, con))
{
    con.Open();
    // etc
}

将连接传递到命令的位置…?未正确处理连接。如果有例外呢?现在你正在泄漏资源。了解该模式。我想知道尚未初始化的连接属性是什么???如果有大量关于SqlCommand类的文档就好了。可能是可以通过互联网访问的地方。哇,那太神奇了。你在哪里传递到命令的连接…?你没有正确处理你的连接。如果有例外呢?现在你正在泄漏资源。了解该模式。我想知道尚未初始化的连接属性是什么???如果有大量关于SqlCommand类的文档就好了。可能是可以通过互联网访问的地方。哇,那太棒了。@EjGenito还应该注意,一旦您使用
语句切换到
,您就不再需要手动关闭或处理连接。它将为您处理该问题,即使是在发生未经处理的异常时。@EjGenito还应注意,一旦您使用
语句切换到
,您将不再需要手动关闭或处理连接。即使发生未处理的异常,它也会为您处理。