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