Ошибка Value was either too large or too small for a Int32 при обновлении DataGridView
Столкнулся со следующей проблемой: запись информации о товаре в таблицу проходит без ошибок, при переключении с текущей формы на другую и обратно тоже без ошибок. Однако после закрытия программы и повторного запуска, при открытии формы для добавления товаров я получаю ошибку в функции updateProducts (она вызывается в Form_load, а так же в функции для записи информации о продуктах в базу). Поле Barcode имеет тип nvarchar(50), поэтому я не могу понять причем тут Int32 в ошибке. Или же проблема с выводом значения в datagridview? Тогда почему сразу после записи данных и до закрытия программы я могу спокойно переходить с формы на форму, тем самым вызывая эту же функцию updateProducts без возникновения ошибки. Подскажет кто-нибудь? P.S: заранее извиняюсь, если ошибка где-то на поверхности, я не так давно начал ознакомление с данным языком, поэтому есть много пробелов в знаниях.
Текст ошибки
Таблица Products
Ответы (1 шт):
Вам надо проверить типизированный DataSet, который вы, видимо, создавали с помощью мышки в дизайнере this.productDataSet и таблицу в нем Products какой тип у столбца для Barcode был создан мастером.
Логика вашего кода, вообще не понятна. Вам же мастер уже все создал для отображения таблицы, первая строка загружает данные из БД.
Вы же всю работу первой строки фактически отменяете, и снова обращаетесь к БД и вручную, да еще и со странными манипуляциями снова извлекаете данные из БД! Зачем тогда нужна первая строка?
Зачем отрывать соединение, создавать экземпляр адаптера и тут же закрывать соединение? А там, где по-идее нужно открытое соединение адаpter.Fill() у вас уже соединение закрыто!
Когда вы только читаете данные из БД вам SqlCommandBuilder не нужен от слова совсем. Строитель команд нужен для автоматического создания команд insert, update и delete, а если вы только читаете, то зачем вам эти команды, а?

