Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / ADO - CreateParameter - Binary - error 0x800A0D5D / 6 сообщений из 6, страница 1 из 1
18.10.2013, 17:42
    #38433286
andreybs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO - CreateParameter - Binary - error 0x800A0D5D
В команде ADODB.Command нужно передать и вернуть значение параметра типа timestamp (по сути это varbinary(8)). Создание параметра команды (CreateParameter) падает с ошибкой 0x800A0D5D, когда я выбираю тип adBinary и передаю значение PVOID или PCHAR или BSTR. Может есть у кого пример использования бинарного параметра в команде ADO?

Код: plaintext
1.
2.
3.
4.
5.
6.
_ParameterPtr TADOParams::ParamBinary(_bstr_t name, PCHAR value, long size, bool output)
{
	_ParameterPtr p = GetCommand()->CreateParameter(name, adBinary, (output ? adParamInputOutput : adParamInput), size, value); // run-time error 0x800A0D5D
	pPrm->Append(p);
	return p;
}
...
Рейтинг: 0 / 0
18.10.2013, 18:04
    #38433317
andreybs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO - CreateParameter - Binary - error 0x800A0D5D
После танцев с бубном выяснилось, что интерфейс падает, если предварительно не обнулить буфер. Но считать tamestamp так и не получилось, пришлось на стороне sql-server конвертить tamestamp в varbinary(8). Если кто работал с tamestamp через ado, подскажите какие типы параметра совместимы.
...
Рейтинг: 0 / 0
18.10.2013, 18:12
    #38433333
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO - CreateParameter - Binary - error 0x800A0D5D
andreybs... ADODB.Command ... падает с ошибкой 0x800A0D5D,
Если хочешь писать на ADO, запомни вот эту ссылку: http://msdn.microsoft.com/en-us/library/ms677004(v=vs.85).aspx
Судя по номеру ошибки твой timestamp (как его понимает драйвер базы данных) не является adBinary.

Лучше всего поискать доку на твою базу, на тот драйвер (odbc или oledb) который ты используешь. И поискать там чем являются timestamp на самом деле.
Ну а если доки нет, то ходи сюда и подбирай методом тыка.
http://msdn.microsoft.com/en-us/library/ms675318(v=vs.85).aspx
...
Рейтинг: 0 / 0
18.10.2013, 19:11
    #38433408
andreybs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO - CreateParameter - Binary - error 0x800A0D5D
White OwlНу а если доки нет, то ходи сюда и подбирай методом тыка.


Приходится так и делать. С timestamp вроде разобрался - с ним легко через bigint работать.

Появилась новая трабла - GUID. С ним та же хрень - непонятно, как его передать через _variant_t, чтобы создать параметр команды. _variant_t не работает с GUID напрямую. Переконвертация GUID->PCHAR, как в случае с Binary не прокатывает, выводит ошибку при создании параметра. Пока единственный рабочий вариант - работа с GUID через преобразование в строку.
...
Рейтинг: 0 / 0
18.10.2013, 20:00
    #38433450
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO - CreateParameter - Binary - error 0x800A0D5D
andreybsПоявилась новая трабла - GUID.
Запусти select и посмотри какой тип поля для него возвращается. Потом создавай параметр
этого же типа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.10.2013, 21:10
    #38433498
andreybs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO - CreateParameter - Binary - error 0x800A0D5D
Dimitry SibiryakovandreybsПоявилась новая трабла - GUID.
Запусти select и посмотри какой тип поля для него возвращается. Потом создавай параметр
этого же типа.


Дельный совет!
Оказалось, что тип параметра должен быть adGUID, а значение в виде BSTR.
Век учись...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / ADO - CreateParameter - Binary - error 0x800A0D5D / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]