2011-09-20 132 views
0

在這裏,我需要訪問的變量delval外的for循環,如下面的代碼在c#中循環訪問變量外?

cmd_mail.Parameters.Add("@deleteusers", SqlDbType.NVarChar).Value = delval; 

..How做到這一點..

這裏是我的代碼

for (int i = 0; i <= NoOfUsers - 1; i++) { 
     using (SqlConnection Conn = new SqlConnection(constr_str)) { 
      using (SqlCommand cmd = new SqlCommand()) { 
       cmd.Connection = Conn; 
       Conn.Open(); 
       cmd.CommandText = "Select top 1 Login_User_Name from Rode_Provisioning_User where [email protected] and CustomerCode [email protected] and disableflag=0 order by User_Count"; 
       cmd.Parameters.Add("@CustomerCode", SqlDbType.VarChar).Value = CustomerCode; 
       cmd.Parameters.Add("@RequestId", SqlDbType.VarChar).Value = RequestId; 
       string Loginusername = cmd.ExecuteScalar(); 
       Conn.Close(); 
       string delval = ""; 
       if (string.IsNullOrEmpty(delval)) { 
        delval = Loginusername; 
       } else { 
        delval = delval + "," + Loginusername; 
       } 
      } 
     } 
     } 

    if (flag == "Yes") { 
     string constr_dep = "server=" + _strServer + ";database=" + _strDatabase + ";uid=" + _strUserid + ";pwd=" + _strPassword + ";"; 
     SqlConnection con_dep = new SqlConnection(); 
     con_dep.ConnectionString = constr_dep; 

     SqlCommand cmd_mail = new SqlCommand("delete_user_mailsend_sp", con_dep); 
     cmd_mail.CommandType = CommandType.StoredProcedure; 
     cmd_mail.CommandTimeout = 0; 
     cmd_mail.Parameters.Add("@companycode", SqlDbType.NVarChar).Value = CustomerCode 
     cmd_mail.Parameters.Add("@deleteusers", SqlDbType.NVarChar).Value = delval; 
      try { 
      con_dep.Open(); 
      cmd_mail.ExecuteNonQuery(); 
     } catch (SqlException ee) { 
      VWLogger.LogMessage("Exception in delete_user_mailsend_sp:", TraceEventType.Critical); 
      VWLogger.LogMessage(ee, TraceEventType.Critical); 
      return ee.Message; 
      flag = ee.Errors(0).ToString(); 

     } 

     con_dep.Close(); 
    } 

任何建議?

+1

您需要重構代碼pal。 – Zenwalker

+0

'delval'在聲明後總是一個空字符串,所以你可以刪除if語句。 –

+0

http://stackoverflow.com/questions/7475200/sql-server-connection-management-with-c/7475327#7475327 –

回答

5

然後在循環外定義它,它將在兩個塊中以及外部都可見。

+0

我很困惑自己。 ==「 –

+0

沒有看到我的循環塊..我在這裏連接delval和登錄用戶名..我需要使用最後的連接delval值作爲循環以外的參數 – bala3569

+0

@ bala3569:so?use it – zerkms

0

正如zerkms所說,在循環之外聲明它。見下文。

string delval = ""; 

for (int i = 0; i <= NoOfUsers - 1; i++) 
{ 
    // your existing stuff 
    // ... 
    if (string.IsNullOrEmpty(delval)) 
    { 
     delval = Loginusername; 
    } 
    else 
    {      
     delval = delval + "," + Loginusername;     
    } 
} 

if (flag == "Yes") 
{   
    // your existing stuff 
    // ... 
    cmd_mail.Parameters.Add("@deleteusers", SqlDbType.NVarChar).Value = delval; 
}