我需要使用相同的變量名來聲明連接字符串。 但是當我這樣做,我會有進一步的錯誤。 我聲明瞭「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();
}
是因爲我不能使用相同的變量?
謝謝。我之前嘗試過第一種方法。它沒有工作。第二種方法工作得很好。 :) – Nana 2009-09-24 02:34:17
我注意到你已經把「範圍」與「聲明空間」混淆了。在相同範圍內聲明兩個相同名稱的變量通常是完全合法的。例如,類C {int x; void M(){int x; }} - 這裏有兩個變量都被稱爲X和兩個由C類中定義的不同範圍內聲明的是,他們在不同的聲明空間,這使得它的法律。 – 2009-09-24 06:25:42
好的,我會補充說明。 – 2009-09-24 07:08:06