Я новичок в MS ADO и пытаюсь понять, как установить размер для параметров команды, созданных
command.CreateParameter (Name, Type, Direction, Size, Value)
Документация гласит следующее:
Размер
Дополнительно. Длинное значение, которое
указывает максимальную длину для
значение параметра в символах или
байт.
...
Если вы укажете данные переменной длины
введите аргумент типа, вы должны
либо передать аргумент размера или установить
Свойство Size объекта Parameter
перед добавлением его в параметры
коллекция; в противном случае ошибка
происходит.
1.) Что нужно передать для параметров фиксированного размера? Это "пофиг"?
Я был немного озадачен примером, найденным здесь , в котором для параметра adInteger было установлено значение 3, а для значения было установлено значение типа VT_I2
pPrmByRoyalty->Type = adInteger;
pPrmByRoyalty->Size = 3;
pPrmByRoyalty->Direction = adParamInput;
pPrmByRoyalty->Value = vtroyal;
VT_I2 подразумевает два байта. Структура tagVARIANT составляет 16 байтов. Как они приземлились на трех? Я вижу, что значение перечисления для adInteger три, но я подозреваю, что это просто совпадение.
Так что немного сбивает с толку, что передать для параметров фиксированного размера. Команда, с которой я работаю, всегда передавала sizeof (int) для adInteger, и это, похоже, работает. Это правильно?
Теперь для параметров «переменной длины»: в документации указано, что мы должны передать «максимальную длину .. в символах или байтах».
2.) Достаточно ли для adVarChar передать максимальную ширину, определенную в базе данных?
3.) А как насчет типов Wide (например, adVarWChar)? Это символы или байты?
4.) Как насчет adVariant, который может содержать данные фиксированной или переменной длины?
5.) Здесь когда-нибудь вступают в игру массивы? (мы не передаем их как параметры, просто любопытно)
Любые ссылки или личные идеи приветствуются.