Исключение IndexOutOfRangeException не было обработано пользовательским кодом в цикле for,

#sql #winforms #c#-4.0

#sql #winforms #c #-4.0

Вопрос:

Я исследовал другие ответы здесь, но ни один из них действительно не подходит к моему случаю. Я добавил таблицу в базу данных, и теперь я получаю эту ошибку. Дело в том, что это сработало на чужом компьютере, но на моем я получаю следующую ошибку. p.s. Мои соединения в порядке (на случай, если вы заблудились):

Исключение IndexOutOfRangeException не было обработано пользовательским кодом

 An exception of type `System.IndexOutOfRangeException` occurred in System.Data.dll but was not handled in user code
  

Дополнительная информация: Не удается найти таблицу 0.

Код-нарушитель — это инициализация int i = 0 в цикле for

Вот мой код

  tableLayoutPanel1.RowCount = ds.Tables[0].Rows.Count;
            for (int i = 0; i < ds.Tables[0].Rows.Count; i  )
        {
            Label lbl = new Label();
            lbl.Text = ds.Tables[0].Rows[i]["RoleName"].ToString();
            tableLayoutPanel1.Controls.Add(lbl);
        }
  

Комментарии:

1. Похоже, что ds.Tables[0].Rows.Count это то, что вызывает исключение, а не возвращаемое неверное количество строк. Вы уверены, что ваше соединение работает?

2. да, это работает

3. ds.Tables[0] попробуйте получить доступ к первой таблице в вашем наборе данных, которой там нет. Почему ваш набор данных пуст, я не могу предположить с помощью этой информации.

4. Установите точку останова в первой строке вашего опубликованного кода. Возьмите мышь и просмотрите список таблиц. Никакой таблицы не будет.