powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка при insert ADO
7 сообщений из 7, страница 1 из 1
Ошибка при insert ADO
    #37988959
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер.

Rad XE2(или СB++6), ORACLE11.
Ситуация в следующем.
Не кушается строка -> 30':f <-
При попытке вставить через ADOQuery в таблицу oracle- "Неправильно определен объект Parameter. Предоставлены несогласованные или неполные сведения."

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
AnsiString SQL="insert into mm_sql 
(sql_id,name,description, change_time, query, status, last_author, version, scheme, parent_id) 
values
("+id_sql+",q'["+Child->Edit1->Text.UpperCase()+
"]',q'["+Child->RichEdit2->Text+"]',to_date('"+DateToStr(Date())+"','dd.mm.yyyy'),
q'["+Child->RichEdit1->Text+"]',1,"+ID_Author+","+IntToStr(version)+","+scheme_id+","+IntToStr(parent_id)+")";

	Child->ADOQuery1->Close();
	Child->ADOQuery1->SQL->Text=SQL;
	Child->ADOQuery1->ExecSQL();



Запрос получается такой:
Код: plsql
1.
2.
3.
4.
5.
insert into mm_sql 
(sql_id,name,description, change_time, query, status, last_author, version, scheme, parent_id) 
values
(91,q'[SDF]',q'[]',to_date('08.10.2012','dd.mm.yyyy'),q'[30':f]',1,1,1,2,91)
--PL SQl эту запись вставляет корректно



Если пойти на хитрость и сделать update query через Pl_sql, в котором все вставляется корректно, то
в DBLookupListBox1, который привязан к запросу
Код: plsql
1.
select name, sql_id from mm_sql where status=1 order by 1


не видит записи под номером 91 и именем SDF. Тоже видать реакция на Query. Это трабл номер 2.
Есть обходные пути, чтобы вставлять в БД специфические строки и отображать их в C++ builder?
Сразу же вопрос про решение. Если я вынесу поле Query в отдельную таблицу и буду читать через stream, покатит?
Потому как DBLookupListBox1 я так понял терпеть всякие нетипичные поля в таблице не очень согласится.
Еще есть мысли, что ADO не понимает что такое лежит в query и хочет заданного параметра. Но я не нашел как параметры менять.
...
Рейтинг: 0 / 0
Ошибка при insert ADO
    #37988970
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freeze729Есть обходные пути, чтобы вставлять в БД специфические строки и отображать
их в C++ builder?
Обходный путь это то, что делаешь ты. Все нормальные люди используют параметризованные
запросы и не парятся с апострофами и SQL Injection.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка при insert ADO
    #37989018
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Не заметил, как строкой 30':f создал искуственный параметр.
2) Не полагал, что такие льготы при его использовании.
3) Спасибо, заработало. И вторая трабла ушла.

P.S. Прежде чем сюда писать, через яндекс четыре форума обошел.
Но почему то только фраза параметризованные запросы меня осенила. Просто слово длинное, поток мыслей задержался.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Child->ADOQuery1->Close();
 SQL="insert into mm_sql (sql_id,name,description, change_time, query, status, last_author, version, scheme, parent_id) values("+id_sql+",q'["+Child->Edit1->Text.UpperCase()+
	"]',q'["+Child->RichEdit2->Text+"]',to_date('"+DateToStr(Date())+"','dd.mm.yyyy'),:q_id,1,"+ID_Author+","+IntToStr(version)+","+scheme_id+","+IntToStr(parent_id)+")";
	Child->ADOQuery1->SQL->Text=SQL;
	Child->ADOQuery1->Parameters->ParamByName("q_id")->Value= Child->RichEdit1->Text;
	Child->ADOQuery1->Prepared=true;
	Child->ADOQuery1->ExecSQL();
...
Рейтинг: 0 / 0
Ошибка при insert ADO
    #37989033
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа, добавил один параметр и почил на лаврах... Ню-ню... Набери в RichEdit2 это:
Код: sql
1.
вот тебе ]'); drop database; 


Posted via ActualForum NNTP Server 1.5

Модератор: следи за языком
...
Рейтинг: 0 / 0
Ошибка при insert ADO
    #37989056
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня почему-то любопытство перед Exeсsql останавливается. Лет в 20 попробовал бы.
А лекарство может предложишь? А то я контекстный поиск сделаю, ща еще ченить затеишь)
...
Рейтинг: 0 / 0
Ошибка при insert ADO
    #37989073
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freeze729А лекарство может предложишь?
А самому додуматься? Подсказываю: у запроса может быть больше одного параметра.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка при insert ADO
    #37989086
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я их для надеги все в параметры вогнал, что текстовые, это я тут пример выложил одного, мало ли еще какой дилетант зайдет.
Код: html
1.
вот тебе ]'); drop  table mm_bug;


Таблица жива
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка при insert ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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