Столбец abc не относится к таблице?

Я повторяю DataTable в своем С# -коде. Я пытаюсь получить содержимое, используя столбец с именем "columnName" строки с именем "row", используя -

object value = row["ColumnName"];

Я получаю эту ошибку -

Ошибка: System.Reflection.TargetInvocationException: Исключение было брошенный мишенью вызова. --- > System.ArgumentException: Столбец "FULL_COUNT" не относится к таблице. в System.Data.DataRow.GetDataColumn(String columnName)

Как это возможно? В моем SQL-запросе/наборе результатов есть столбец под этим именем, и запрос даже запускается в студии управления.

Как исправить эту ошибку?

Ответ 1

Я предполагаю, что ваш код итерации должен быть чем-то вроде этого

DataTable table = new DataTable();
foreach (DataRow row in table.Rows) {
    foreach (DataColumn col in table.Columns) {
        object value = row[col.ColumnName];
    }
}

Если это так, row["ColumnName"] на каждой итерации ищет тот же столбец с именем ColumnName, который, очевидно, не существует в вашей таблице.

Правильный способ: row[ColumnName] или row[col.ColumnName] в итерации выше

Ответ 2

Не пишите имена столбцов Gridview вместо имен столбцов базы данных.

dataGridViewEmployeeClass.Rows[n].Cells[0].Value = item["write the Database Column names"].ToString();

Ответ 3

У меня была аналогичная проблема в моем коде С#, используя набор данных, который я успешно инициализировал и заполнил данными из БД.

Итак, мой набор возвращался:

data = новый байт [0];

data = (Byte []) (dataset.Tables [0].Rows [0] [ "systemLogo_img" ]);

Конечно, ошибка заключалась в том, чтобы найти столбец "systemLogo_img".

Я отметил, что вам просто не нужно вызывать/определять имя столбца. Таким образом, исправление:

data = new Byte [0];

data = (Byte []) (dataset.Tables [0].Rows [0].ItemArray [0]);

Проще говоря: используйте "ItemArray" в позиции.

Спасибо

Ответ 4

У меня была одна и та же проблема, которая пыталась передать два разных ключа для одного и того же продукта.

  item.Product = SqlHelper.GetSafeString(dr, "ProductName");
  item.Product = SqlHelper.GetSafeString(dr, "Product");