Цикл массива не показывает последующие значения - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть приложение C # WinForms, которое использует StringBuilder для добавления значений для месяца, dayOfWeek, времени дня, имени, даты и необязательного комментария.

Каждое значение следует после добавления запятой итогда следующее значение.Я создаю массив string [] string [] thisAssignment, после чего назначаю массиву StringBuilder следующим образом:

thisAssignment = fsAssign.ToString (). Split (',');RecordMonday2SaturdayAssignments (thisAssignment);

Я передаю массив методу, в котором присваиваю отдельные элементы массива переменным, а затем параметризирую их для оператора SQL INSERT.

Проблема I 'Мы столкнулись с тем, что при пошаговом выполнении кода я вижу месяц и день недели, т. е. «понедельник».Однако после следующей итерации он снова показывает значение понедельника вместо того, чтобы переходить ко вторнику и т. Д.

Я показываю цикл ниже.

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();
}

Однако вместо отображения правильных значений цикл извлекает один символ из имени месяца.Например, когда я выбрал месяц февраля, переменная month заполнялась буквой «F», переменная dayOfWeek имела «e», fsTimes - «b» и так далее.В моем первоначальном посте я не упомянул, что я использовал индекс «i» вместе с элементом массива.

Если у кого-то есть полезное предложение по формированию цикла массива по-другому, я бы хотел услышать это.Или, что еще лучше, ВИДЕТЬ предложение, которое позволит мне извлечь несколько значений из массива и назначить их вышеупомянутым переменным.

1 Ответ

0 голосов
/ 28 февраля 2019

Я продолжал пробовать различные идеи для решения этой проблемы и, наконец, обнаружил, что работает в этой ситуации.Так как простое использование отдельных индексов предоставляло данные только на первой итерации, а использование «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();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...