当前上下文中不存在变量(asp.net 连接字符串),我不明白为什么

Variable (for asp.net connection string) does not exist in the current context and I can't see why

我已经尝试(几乎是一步一步)复制此视频中的代码 https://www.youtube.com/watch?v=pBCPc44CE74&index=3&list=PL6n9fhu94yhX5dzHunAI2t4kE0kOuv4D7 但我的 'con' 变量在两个地方导致错误。我的代码是:

    protected void Page_Load(object sender, EventArgs e)
    {
        string CS = ConfigurationManager.ConnectionStrings["CSDB"].ConnectionString;
        using (SqlConnection con = new SqlConnection(CS)) ;

            SqlCommand cmd = new SqlCommand("SELECT  * FROM  admin_UserRole WHERE Archived = 0", con);
            con.Open();
            RoleGrid.DataSource = cmd.ExecuteReader();
            RoleGrid.DataBind();

    }

}

}

在我的 SQL 语句之后 'con' 和 'con.Open();' 也会出现错误。

我显然是新手,所以如果我没有说清楚来回答这个问题,我深表歉意。

您的 using 语句过早关闭...这意味着...您的 SqlConnection 对象会立即创建和处置。

所以修改你的代码如下

protected void Page_Load(object sender, EventArgs e)
    {
        string CS = ConfigurationManager.ConnectionStrings["CSDB"].ConnectionString;
        using (SqlConnection con = new SqlConnection(CS)){

            SqlCommand cmd = new SqlCommand("SELECT  * FROM  admin_UserRole WHERE Archived = 0", con);
            con.Open();
            RoleGrid.DataSource = cmd.ExecuteReader();
            RoleGrid.DataBind();

    }

}

检查

using (SqlConnection con = new SqlConnection(CS)) 
{
   if (con.State == ConnectionState.Closed)
   {
     con.Open();
   }

   .......
 }