powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ADO & empty string
7 сообщений из 7, страница 1 из 1
ADO & empty string
    #32010786
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос, наверное, не нов. Но все-таки.
Хочу передать в sp параметры, используя ADO. Некоторые параметры имеют тип nvarchar. Проблема возникает, если я пытаюсь передать пустую строку.
Если я задаю тип adWChar, в Value пихаю пустую строку, Size = 0 то при выполнении команды получаю ошибку "Parameter object is improperly defined. Inconsistent or incomplete information was provided."
Если я задаю тип adBSTR, то все проходит без ошибок, но в базу попадает вместо пустой строки один пробел 8-(

Вроде мне попадалась статейка на поиске MS про эту хрень, но вот именно сейчас я найти ее не могу...
...
Рейтинг: 0 / 0
ADO & empty string
    #32010794
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
Нельзя указывать Size=0. Это аналогично тому, что ты пытаешься использовать nvarchar(0), а это неправильно. И использовать нужно adVarWChar а не adWChar, которая эквавалентна nchar, а не nvarchar.
...
Рейтинг: 0 / 0
ADO & empty string
    #32010828
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет adVarWChar ты, наверное, прав. Хотя мой маппинг SQL типов на ADO'шные почерпнут целиком из MSDN, топик "Mapping data types [SQL Server - ADO]". Там прямо табличка - какие SQL типы в какие ADO'шные отображаются. Может, они там приврали...
Так а с длиной-то что делать ? Если я хочу пустую строку передавать ?
...
Рейтинг: 0 / 0
ADO & empty string
    #32010843
Sergy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если null передать?
...
Рейтинг: 0 / 0
ADO & empty string
    #32010865
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sergy: для базы данных пустая строка и null - это две большие разницы.
...
Рейтинг: 0 / 0
ADO & empty string
    #32011081
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
Size задает размер не текущего значения, а базовую размерность параметра. Она должна быть такой же как в объявлении хранимой процедуры.
Насколько я смыслю в вопросах передачи строковых параметров, передаются строки с завершающим нулевым байтом. Возьми да и зашли строку с chr(0) в качестве первого байта. Сам не пробовал - не уверен.
...
Рейтинг: 0 / 0
ADO & empty string
    #32011152
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chr(0) ? Это будет не слишком хорошо для unicode параметров (а у меня в основном именно такие). Проблема более-менее разрешилась, если отказаться от использования adBSTR, и брать adVarWChar. Ну и соответственно adVarChar для не-юникодных строк. Еще мне один знакомый посоветовал использовать size = -1 и это помогло 8-()))!!! В MSDN этому объяснения не нашлось, но где-то когда-то от кого-то промелькнуло, что -1 - это указание, что размер будет определяться драйвером во время выполнения. Вызывает якобы некоторое падение производительности, но зато снимаются вот такие проблемы.

P.S. А в MSDN маппинг SQL типов данных в ADO лажовый до неприличия...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ADO & empty string
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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