У нас есть устаревшие данные, которые хранятся в базе данных MSSQL как varchar, хотя данные действительно двоичные. В новом приложении мы используем OleDbCommand (поскольку мы пытаемся использовать общий код для доступа к базам данных MSSQL+Oracle+Sybase).
Я могу получить данные из базы данных, выполнив:
DA.SelectCommand.CommandText = "select
sequence_num, summary_num, line_num, CONVERT(varbinary, other_information) other_information
from alex_test_bin";
Однако команда вставки:
DA.InsertCommand.CommandText = "insert into alex2_test_bin
(sequence_num, summary_num, line_num, other_information)
values(?, ?, ?, CONVERT(varchar, ?))";
выдает эту ошибку (это происходит во время 'DA.Update(DT);'):
Не указано значение для одного или нескольких обязательных параметров.
В настоящее время я просто пытаюсь прочитать данные из alex_test_bin и вставить данные в alex2_test_bin. Между чтением и записью я использую метод SetAdded() для каждой строки из DT, чтобы все эти строки были вставлены.
Является ли мой оператор вставки неверным? Есть ли способ исправить это и иметь возможность использовать функции внутри оператора вставки? Я успешно выполнил оператор вставки вручную из диспетчера sql.
INSERT
нет ничего плохого, поскольку вы проверили себя в SSMS. Вы проверили значения параметров, как указано в сообщении об ошибке? См., например, этот вопрос. - person Pondlife   schedule 03.10.2012