Столбец 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");