Ошибки обновления набора записей при обновлении поля sql_variant

Я использую C++ и ADO для добавления данных в базу данных SQL Server 2005. При вызове метода обновления набора записей для столбца sql_variant я получаю сообщение об ошибке DB_E_ERRORSOCCURRED и сообщение об ошибке Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.. Если значение, которое я добавляю, равно NULL, все работает нормально, и все значения, поступающие в поля, не относящиеся к типам sql_variant, работают.

Кто-нибудь знает, что я могу делать неправильно?

Спасибо

[править] У меня есть дополнительная информация. Значение, которое мы сохраняем, представляет собой пустую строку — похоже, ADO хочет сохранить ее в sql_variant как nchar(0), что, конечно же, не является допустимым типом данных SQL. Есть ли способ получить пустую строку в sql_variant с помощью пакетных команд ADO?


person Stephen Nutt    schedule 08.02.2010    source источник
comment
DB_E_ERRORSOCCURRED указывает на наличие нескольких ошибок и необходимость просмотра состояния, возвращаемого OLEDB, для каждого из столбцов, чтобы определить реальную проблему. Привязка значений данных из Microsoft Developer Network предоставляет информацию о функциях привязки, и есть раздел Статус, в котором содержится подробная информация о DB_E_ERRORSOCCURRED.   -  person Richard Chambers    schedule 03.05.2014


Ответы (1)


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

Извините, я разработчик VB, но если вы просматриваете ошибки в своем объекте подключения, вы сможете точно определить фактическую ошибку.

Из моих классических дней ADO многоэтапные ошибки обычно указывали на попытку вставить что-то слишком большое в ваш столбец, например, слишком большую строку или число со слишком высокой точностью.

Надеюсь это поможет.

Ed

person CResults    schedule 09.02.2010
comment
Эд, спасибо за предложение. Я был переведен на другой проект на несколько дней, так что может пройти какое-то время, прежде чем у меня появится шанс вернуться к этому. - person Stephen Nutt; 10.02.2010