我有一个C#WinForms应用程序,它使用StringBuilder附加月份,dayOfWeek,一天中的时间,名称,日期和可选注释的值。
每个值后面都跟一个逗号,然后是下一个值。我创建一个string []数组string [] thisAssignment,然后将StringBuilder分配给数组,如下所示:
thisAssignment = fsAssign.ToString()。Split(','); RecordMonday2SaturdayAssignments(thisAssignment);
我将数组传递给一个方法,在该方法中,我将数组的各个元素分配给变量,然后将其参数化以用于SQL INSERT语句。
我遇到的问题是,单步执行代码时,我可以看到month和dayOfWeek,即“ Monday”。但是,在下一次迭代时,它将再次显示星期一的值,而不是继续显示星期二,等等。
我在下面显示了循环。
for (int i = 0; i < assignments.Length; i++ )
{
month = assignments[0].ToString();
dayOfWeek = assignments[1].ToString();
fsTimes = assignments[2].ToString();
name = assignments[3].ToString();
date = assignments[4].ToString();
comment = assignments[5].ToString();
cmd.Parameters.Clear();
List<SqlParameter> list = new List<SqlParameter>();
list.Add(new SqlParameter("@month", month));
list.Add(new SqlParameter("@dayOfWeek", dayOfWeek));
list.Add(new SqlParameter("@fsTimes", fsTimes));
list.Add(new SqlParameter("@names", name));
list.Add(new SqlParameter("@dates", date));
list.Add(new SqlParameter("@comments", comment));
cmd.Parameters.AddRange(list.ToArray<SqlParameter>());
int response = cmd.ExecuteNonQuery();
}
我也尝试过在数组的元素编号之前或之后添加索引,如下所示
for (int i = 0; i < assignments.Length; i++ )
{
month = assignments[i][0].ToString();
dayOfWeek = assignments[i][1].ToString();
fsTimes = assignments[i][2].ToString();
name = assignments[i][3].ToString();
date = assignments[i][4].ToString();
comment = assignments[i][5].ToString();
}
但是,循环没有显示正确的值,而是从月份名称中提取了单个字符。例如,当我选择2月时,month变量填充了字母“ F”,dayOfWeek变量具有“ e”,fsTimes具有“ b”,依此类推。在我的原始文章中,我忽略了提及我已经将“ i”索引与数组元素一起使用的问题。
如果有人对以其他方式形成数组循环有帮助的建议,我很想听听。甚至更好的建议是,允许我从数组中提取多个值并将它们分配给上述变量。
答案 0 :(得分:0)
我一直在尝试各种想法来解决此问题,最后发现在这种情况下有效的方法。由于仅使用单个索引仅在第一次迭代时提供了数据,并且仅使用“ i”本身就返回了单个字符,因此我发现从第二个元素开始将“ i + = 1”递增就从所有行返回了我的数据。
我在下面展示我的工作。
for (int i = 0; i < assignments.Count; i++)
{
month = assignments[i];
dayOfWeek = assignments[i += 1];
fsTimes = assignments[i += 1];
name = assignments[i += 1];
date = assignments[i += 1];
comment = assignments[i += 1];
cmd.Parameters.Clear();
List<SqlParameter> list = new List<SqlParameter>();
list.Add(new SqlParameter("@month", month));
list.Add(new SqlParameter("@dayOfWeek", dayOfWeek));
list.Add(new SqlParameter("@fsTimes", fsTimes));
list.Add(new SqlParameter("@names", name));
list.Add(new SqlParameter("@dates", date));
list.Add(new SqlParameter("@comments", comment));
cmd.Parameters.AddRange(list.ToArray<SqlParameter>());
int response = cmd.ExecuteNonQuery();
}