在范围中使用相同的变量名称

时间:2009-09-24 02:09:54

标签: c# variables

我需要使用相同的变量名来声明连接字符串。 但是当我这样做时,我会有进一步的错误。 我声明了“SqlConnection sqlCon = new SqlConnection(strCon);”对于第一个变量,我可以再次使用它吗? 根据我的老师的说法,我应该使用相同的变量。

string strCon = Database.GetConStr();
    SqlConnection sqlCon = new SqlConnection(strCon);
    try
    { string strSql = "SELECT Name, ID FROM student WHERE Status = 'A' ORDER BY Name";
        SqlCommand sqlCmd = new SqlCommand(strSql, sqlCon);
        sqlCon.Open();
        SqlDataReader reader = sqlCmd.ExecuteReader();
        while (reader.Read())
        {
            ddlStaff.Items.Add(new ListItem(reader["Name"].ToString(), reader["ID"].ToString()));
        }
        reader.Close();
    }
    catch (Exception ex)
    {
        Session["Error"] = "Error in getting ... System Msg: " + ex.Message;
        Server.Transfer("Error.aspx");
    }
    finally
    {
        if (sqlCon.State == ConnectionState.Open)
            sqlCon.Close();
    }

    string strCon2 = Database.GetConStr();
    sqlCon = new SqlConnection(strCon2);
    try
    { string strSql2 = "SELECT Desc1, Desc2 FROM Parameter WHERE Paracode1 = 'Test' AND Status = 'A' ORDER BY Desc1";
        SqlCommand sqlCmd2 = new SqlCommand(strSql2, sqlCon);
        sqlCon.Open();
        SqlDataReader reader2 = sqlCmd2.ExecuteReader();
        while (reader2.Read())
        {
            ddlModule.Items.Add(new ListItem(reader2["Desc1"].ToString(), reader2["Desc22"].ToString()));
        }
        reader2.Close();
    }
    catch (Exception ex)
    {
        Session["Error"] = "Error in getting ... System Msg: " + ex.Message;
        Server.Transfer("Error.aspx");
    }
    finally
    {
        if (sqlCon.State == ConnectionState.Open)
        sqlCon.Close();
    }

是因为我不能使用相同的变量吗?

3 个答案:

答案 0 :(得分:4)

您可以重复使用相同的变量名称。问题是你要宣布它两次。尝试从第二个实例中删除“SqlConnection”(变量类型)。

答案 1 :(得分:2)

您不能在同一声明空间中多次声明相同的变量名称。但你可以很好地使用它。

try removing SqlConnection in second declaration:
    /*SqlConnection*/ sqlCon = new SqlConnection(strCon2);

如果要声明相同的名称,则可以定义变量名称的范围using {}

例如:

{
    SqlConnection sqlCon = new SqlConnection(strCon);
   //use sqlCon 
}//scope ends
//sqlCon  is not available after } 
{ //new scope starts
     SqlConnection sqlCon = new SqlConnection(strCon);
}

答案 2 :(得分:0)

尝试这样: - sqlConnection sqlcon = new sqlConnection(); //第一次连接 sqlcon.connectionstring =“connection string1” 做一些工作.... //第二 sqlcon.connectionstring =“连接字符串2” ......