开发者

accessing variable outside for loop in c#?

Here i need to access the variable delval outside the for loop as in the code below

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

..How to do this..

开发者_运维问答

Here is my code

 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 RequestId=@RequestId and CustomerCode =@CustomerCode 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();
    }

Any suggestion?


Define it outside the loop then, and it will be visible in both blocks, as well as outside.


As zerkms said, declare it outside the loop. See below.

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;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜