Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ADO & empty string
|
|||
|---|---|---|---|
|
#18+
Вопрос, наверное, не нов. Но все-таки. Хочу передать в sp параметры, используя ADO. Некоторые параметры имеют тип nvarchar. Проблема возникает, если я пытаюсь передать пустую строку. Если я задаю тип adWChar, в Value пихаю пустую строку, Size = 0 то при выполнении команды получаю ошибку "Parameter object is improperly defined. Inconsistent or incomplete information was provided." Если я задаю тип adBSTR, то все проходит без ошибок, но в базу попадает вместо пустой строки один пробел 8-( Вроде мне попадалась статейка на поиске MS про эту хрень, но вот именно сейчас я найти ее не могу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 14:31 |
|
||
|
ADO & empty string
|
|||
|---|---|---|---|
|
#18+
Нельзя указывать Size=0. Это аналогично тому, что ты пытаешься использовать nvarchar(0), а это неправильно. И использовать нужно adVarWChar а не adWChar, которая эквавалентна nchar, а не nvarchar. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 15:44 |
|
||
|
ADO & empty string
|
|||
|---|---|---|---|
|
#18+
Насчет adVarWChar ты, наверное, прав. Хотя мой маппинг SQL типов на ADO'шные почерпнут целиком из MSDN, топик "Mapping data types [SQL Server - ADO]". Там прямо табличка - какие SQL типы в какие ADO'шные отображаются. Может, они там приврали... Так а с длиной-то что делать ? Если я хочу пустую строку передавать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2001, 10:22 |
|
||
|
ADO & empty string
|
|||
|---|---|---|---|
|
#18+
А если null передать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2001, 11:09 |
|
||
|
ADO & empty string
|
|||
|---|---|---|---|
|
#18+
2 Sergy: для базы данных пустая строка и null - это две большие разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2001, 12:03 |
|
||
|
ADO & empty string
|
|||
|---|---|---|---|
|
#18+
Size задает размер не текущего значения, а базовую размерность параметра. Она должна быть такой же как в объявлении хранимой процедуры. Насколько я смыслю в вопросах передачи строковых параметров, передаются строки с завершающим нулевым байтом. Возьми да и зашли строку с chr(0) в качестве первого байта. Сам не пробовал - не уверен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2001, 15:52 |
|
||
|
ADO & empty string
|
|||
|---|---|---|---|
|
#18+
chr(0) ? Это будет не слишком хорошо для unicode параметров (а у меня в основном именно такие). Проблема более-менее разрешилась, если отказаться от использования adBSTR, и брать adVarWChar. Ну и соответственно adVarChar для не-юникодных строк. Еще мне один знакомый посоветовал использовать size = -1 и это помогло 8-()))!!! В MSDN этому объяснения не нашлось, но где-то когда-то от кого-то промелькнуло, что -1 - это указание, что размер будет определяться драйвером во время выполнения. Вызывает якобы некоторое падение производительности, но зато снимаются вот такие проблемы. P.S. А в MSDN маппинг SQL типов данных в ADO лажовый до неприличия... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2001, 08:13 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3556&tid=1825968]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 319ms |

| 0 / 0 |
