Столбец abc не принадлежит таблице?

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

object value = row["ColumnName"];

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

Ошибка: Системе.Отображение.TargetInvocationException: исключение брошенный целью вызова. ---> Система.ArgumentException: столбец "FULL_COUNT" не принадлежит таблице . в системе.Данные.объект DataRow.GetDataColumn (Строка columnName)

Как это возможно ? Мой SQL-запрос / результирующий набор имеет столбец с этим именем, и запрос даже выполняется в среде management studio.

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

4 ответов


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

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] в итерации выше


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

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

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

Итак, мой обратный набор был:

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

data = (Byte []) (dataset.Таблицы[0].Строки[0]["systemLogo_img"]);

конечно, ошибка заключалась в T поиске столбца "systemLogo_img".

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

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

data = (Byte []) (dataset.Таблицы[0].Строки[0].ItemArray[0]);

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

спасибо


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

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