如何在C#中获得两个变量值循环?

时间:2015-06-11 06:41:11

标签: c# sql-server

我想在循环中将两个变量插入到database.how中吗?

foreach (string item in split)
{
val = item;
foreach (string uid in useid)
{
useval = uid;
}
command = new SqlCommand();
command.CommandText = "Insert_SentSMS";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@sentTime", sentTime);
command.Parameters.AddWithValue("@mobileNo", val);
command.Parameters.AddWithValue("@userid", useval);
command.Parameters.AddWithValue("@smsType", "Manual");
command.Parameters.AddWithValue("@smsText", smsText);
command.Parameters.AddWithValue("@registrationId", lblCustomSMSRegId.Text);
command.Connection = connection;
command.ExecuteNonQuery();
}
}

我尝试过如上所述,但'useval'值与其他值相同...

4 个答案:

答案 0 :(得分:1)

如果您能正确格式化代码,您可以自己找到解决方案。

您的代码显然有2 {但3 }。这意味着,您在代码中忘记了一个{,或者您没有提及我们。

你正在执行你的命令 foreach (string uid in useid)声明。这意味着,只有最后一个值将作为useval执行。

将执行代码部分移至;

foreach (string item in split)
{
    val = item;
    foreach (string uid in useid)
    {
        useval = uid;
        command = new SqlCommand();
        command.CommandText = "Insert_SentSMS";
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.AddWithValue("@sentTime", sentTime);
        command.Parameters.AddWithValue("@mobileNo", val);
        command.Parameters.AddWithValue("@userid", useval);
        command.Parameters.AddWithValue("@smsType", "Manual");
        command.Parameters.AddWithValue("@smsText", smsText);
        command.Parameters.AddWithValue("@registrationId", lblCustomSMSRegId.Text);
        command.Connection = connection;
        command.ExecuteNonQuery();
    }
}

顺便说一下,不要再使用AddWithValue了。 It may generate unexpected results sometimes。使用Add重载来指定SqlDbType和参数大小。还可以使用using statement来处置您的连接和命令。

答案 1 :(得分:0)

答案 2 :(得分:0)

你在永远循环中重新useVal。以下是您可以实现的目标:

foreach (string item in split)
{
    val = item;
    foreach (string uid in useid)
    {
        useval = uid;
        command = new SqlCommand();
        command.CommandText = "Insert_SentSMS";
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.AddWithValue("@sentTime", sentTime);
        command.Parameters.AddWithValue("@mobileNo", val);
        command.Parameters.AddWithValue("@userid", useval);
        command.Parameters.AddWithValue("@smsType", "Manual");
        command.Parameters.AddWithValue("@smsText", smsText);
        command.Parameters.AddWithValue("@registrationId", lblCustomSMSRegId.Text);
        command.Connection = connection;
        command.ExecuteNonQuery();
    }
}

但是我不确定在循环中创建数据库查询是否是个好主意。

答案 3 :(得分:0)

您的foreach循环错误:

foreach (string uid in useid)
{
    useval = uid;
}

这没有任何意义(你在没有对它们做任何事情的情况下迭代所有项目),你可能意味着做类似的事情:

 foreach (string item in split)
 {
     val = item;
     foreach (string uid in useid)
     {
         useval = uid;

         command = new SqlCommand();
         command.CommandText = "Insert_SentSMS";
         command.CommandType = CommandType.StoredProcedure;
         command.Parameters.AddWithValue("@sentTime", sentTime);
         command.Parameters.AddWithValue("@mobileNo", val);
         command.Parameters.AddWithValue("@userid", useval);
         command.Parameters.AddWithValue("@smsType", "Manual");
         command.Parameters.AddWithValue("@smsText", smsText);
         command.Parameters.AddWithValue("@registrationId", lblCustomSMSRegId.Text);
         command.Connection = connection;
         command.ExecuteNonQuery();
    }
}