C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Проблема при добавлении строки, MS SQL Server 2000; ADOQuery
full_lamer
Отправлено: 09.04.2005, 21:17


Машинист паровоза

Группа: Участник
Сообщений: 225



доброго времени суток.
у меня возникла небольшая проблема при попытке добавить запись посредством SQL-запроса в БД.
Используемые компоненты:
ADOConnection
ADOQuery
Текст запроса, вызывающий ошибку:
CODE
insert table1 (field1, field2) values (1, '\" <2:9>')

ошибка звучит примерно так:
QUOTE
Неверно определен объект Parameter. Представлены несовместимые или неполные сведения

а значение свойства 'Name' у 'Parameter' — равно ':9>'... помогите пожалуста разобраться....
olegenty
Отправлено: 10.04.2005, 14:33


Ветеран

Группа: Модератор
Сообщений: 2412



напиши так:
SQL
insert table1 (field1, field2) values (:Param1, :Param2)

сходи в св-во Parameters объекта ADOQuery, и выстави типы параметров (для второго — ftString с соответствующей длиной)
затем, перед выполнением запроса:
CODE

ADOQuery->Parameters->ParamByName("Param1")->Value = 1;
ADOQuery->Parameters->ParamByName("Param2")->Value = "\" <2:9>";

и далее выполняй запрос.
full_lamer
Отправлено: 11.04.2005, 07:37


Машинист паровоза

Группа: Участник
Сообщений: 225



это конечно я знаю... только небольшая проблемка:
эти пресловутые символы ":цифра", попадаются в огромных строках по 300 — 1000 символом, и оно может встретиться где угодно... а запросы формируются автоматом, простой конкатинацией строк и чисел... вот поентому возиться с параметрами очень трудоемкий процесс, а к то тому эта комбинация может встречаться по несколько раз на строку... sad.gif
я пока просто устраняю эти символы... из строк, большой потери не наблюдается, просто времени в обрез...
AVC
Отправлено: 11.04.2005, 10:09


Ветеран

Группа: Модератор
Сообщений: 1583



Можно попытаться иначе закодировать двоеточие (например Sybase позволяет передавать символы 16-ти ричным кодом) или отказаться от двоеточия, заменив его другим символом.
Вам мешает ADO'шный анализатор текста запроса. Сумеете его "обмануть" — все получится. Может попробовать поэкспериментировать с Prepared? На первый взгляд должно получиться.
olegenty
Отправлено: 11.04.2005, 15:53


Ветеран

Группа: Модератор
Сообщений: 2412



не понимаю, что мешает конкатенировать автоматически — в параметры. в упор проблемы не вижу, если честно. DSQL вообще большое зло, если честно. для MSSQL — в том числе.
full_lamer
Отправлено: 12.04.2005, 07:43


Машинист паровоза

Группа: Участник
Сообщений: 225



2olegenty
QUOTE
DSQL вообще большое зло

а чем пользоваться то еще?
QUOTE
в упор проблемы не вижу

небольшая проблема — время — пока тот алгоритм, который уже есть работает, а занимаюсь другими частями проекта... как только появиться время перепишу модуль...
full_lamer
Отправлено: 12.04.2005, 08:44


Машинист паровоза

Группа: Участник
Сообщений: 225



тогда у меня возникает новый вопрос:
а если таких комбинация " :цифра " будет несколько?

Вернуться в Работа с базами данных в C++Builder