MSSQL 2000, ADO, can not insert empty string and/or NULL.
От: JetSnaiL Украина  
Дата: 26.08.05 07:49
Оценка:
Не могу вставить в базу NULL или пустую строку. ADO бросается исключением в тот момент, когда пытаюсь параметризировать команду.
Текст исключения: "Parameter object is improperly defined. Inconsistent or incomplete information
was provided.". Пробовал указывать adEmpty + _variant_t типа VT_EMPTY или VT_NULL, в общем чего только не пробовал, никак. Кто нибудь сталкивался с такой проблемой? Поискал в интернете, нашел, что парни решали тем, что вставляли пробел, но мне, к сожалению, это не подходит. Помогите, кто чем может, в общем! :)
:crash: :xz:

_variant_t v;

v.ChangeType(VT_NULL);
command_->Parameters->Append(command_->CreateParameter("", adEmpty, adParamInput, 0, v));
Годы прибавляют опыт только разумному человеку, но ум не зависит от возраста.
Re: MSSQL 2000, ADO, can not insert empty string and/or NULL
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 26.08.05 08:09
Оценка:
Здравствуйте, JetSnaiL, Вы писали:

JSL>Не могу вставить в базу NULL или пустую строку.


v.ChangeType(VT_NULL);
command_->Parameters->Append(command_->CreateParameter("", adBSTR, adParamInput, sizeof(BSTR), v));

В ряде случаем, вместо sizeof(BSTR) можно передавать -1
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: MSSQL 2000, ADO, can not insert empty string and/or NULL
От: mike124  
Дата: 26.08.05 08:47
Оценка:
Попробуй без параметров. Вставляй через какое-нибудь поле как IS NULL. Все равно ж пустая строка нужна.
Re[2]: MSSQL 2000, ADO, can not insert empty string and/or N
От: JetSnaiL Украина  
Дата: 26.08.05 08:49
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Здравствуйте, JetSnaiL, Вы писали:


JSL>>Не могу вставить в базу NULL или пустую строку.


КД>
КД>v.ChangeType(VT_NULL);
КД>command_->Parameters->Append(command_->CreateParameter("", adBSTR, adParamInput, sizeof(BSTR), v));
КД>

КД>В ряде случаем, вместо sizeof(BSTR) можно передавать -1

Спасибо, adBSTR, sizeof(BSTR) и _variant_t типа VT_EMPTY сработало!
Годы прибавляют опыт только разумному человеку, но ум не зависит от возраста.
Re[2]: MSSQL 2000, ADO, can not insert empty string and/or N
От: JetSnaiL Украина  
Дата: 08.09.05 11:33
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Здравствуйте, JetSnaiL, Вы писали:


JSL>>Не могу вставить в базу NULL или пустую строку.


КД>
КД>v.ChangeType(VT_NULL);
КД>command_->Parameters->Append(command_->CreateParameter("", adBSTR, adParamInput, sizeof(BSTR), v));
КД>

КД>В ряде случаем, вместо sizeof(BSTR) можно передавать -1

Здравствуйте, теперь столкнулся с другой проблемой, когда в базе пустая строка, я получаю _variant_t типа VT_BSTR, SysStringLen(var_->bstrVal) возвращает 4, в итоге я получаю строку " ", хотя на самом деле в базе "". Как это лечится? Заранее спасибо.
Годы прибавляют опыт только разумному человеку, но ум не зависит от возраста.
Re[3]: MSSQL 2000, ADO, can not insert empty string and/or N
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 08.09.05 11:36
Оценка:
Здравствуйте, JetSnaiL, Вы писали:

JSL>Здравствуйте, теперь столкнулся с другой проблемой, когда в базе пустая строка, я получаю _variant_t типа VT_BSTR, SysStringLen(var_->bstrVal) возвращает 4, в итоге я получаю строку " ", хотя на самом деле в базе "". Как это лечится? Заранее спасибо.


Сдается мне, у тебя тип колонки CHAR(4), а не VARCHAR(4). Поэтому и пробелы для якобы пустой строки получаешь.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[4]: MSSQL 2000, ADO, can not insert empty string and/or N
От: JetSnaiL Украина  
Дата: 08.09.05 11:41
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Здравствуйте, JetSnaiL, Вы писали:


JSL>>Здравствуйте, теперь столкнулся с другой проблемой, когда в базе пустая строка, я получаю _variant_t типа VT_BSTR, SysStringLen(var_->bstrVal) возвращает 4, в итоге я получаю строку " ", хотя на самом деле в базе "". Как это лечится? Заранее спасибо.


КД>Сдается мне, у тебя тип колонки CHAR(4), а не VARCHAR(4). Поэтому и пробелы для якобы пустой строки получаешь.


На самом деле у меня varchar(128). Я ожидаю, что ADO вернет мне VT_EMPTY или хотябы VT_BSTR нулевого размера, а он мне чушь какую-то дает :-(
Годы прибавляют опыт только разумному человеку, но ум не зависит от возраста.
Re[5]: MSSQL 2000, ADO, can not insert empty string and/or N
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 08.09.05 11:47
Оценка:
Здравствуйте, JetSnaiL, Вы писали:

КД>>Сдается мне, у тебя тип колонки CHAR(4), а не VARCHAR(4). Поэтому и пробелы для якобы пустой строки получаешь.


JSL>На самом деле у меня varchar(128). Я ожидаю, что ADO вернет мне VT_EMPTY или хотябы VT_BSTR нулевого размера, а он мне чушь какую-то дает


Охинея какая-та. Ты все правильно у себя в коде напутал?

А на маленьком тестовом примере это воспроизводится?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[6]: MSSQL 2000, ADO, can not insert empty string and/or N
От: JetSnaiL Украина  
Дата: 08.09.05 11:50
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Здравствуйте, JetSnaiL, Вы писали:


КД>>>Сдается мне, у тебя тип колонки CHAR(4), а не VARCHAR(4). Поэтому и пробелы для якобы пустой строки получаешь.


JSL>>На самом деле у меня varchar(128). Я ожидаю, что ADO вернет мне VT_EMPTY или хотябы VT_BSTR нулевого размера, а он мне чушь какую-то дает :-(


КД>Охинея какая-та. Ты все правильно у себя в коде напутал?


КД>А на маленьком тестовом примере это воспроизводится?


Да, у меня там и так немного кода.
В общем я в панике.. сейчас сижу что-то эксперементирую.
Годы прибавляют опыт только разумному человеку, но ум не зависит от возраста.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.