Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Chr(39)


VeryLongString ©   (2007-01-28 12:24:00) 

Здравствуйте. При помощи ADOCommand1 выполняю запрос в Access базу, но случилась такая проблема. Одна из переменных на добавление (допустим OOthe - Ldb.Other), содержит такой текст: hello i'm a'a'dkfdnfdjfdf;df'dsfee'rrrr'pp2'
И тогда при выполнении запроса получается не приятная ситуация, а именно: Ошибка синтаксиса (пропущен оператор) в выражении запроса...
Можно как-то это исправить? (Исключая замену всех ' в этой переменной)


         ADOCommand1.CommandText := 'INSERT INTO Informations ' +
         '(OName, OAdministrator, OAdministratorEmail, OOther' +
         '...........)' +
         ' VALUES ' +
         Format('(''%s'', ''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'')',
         [
           Ldb.Name, Ldb.Administrator, Ldb.Email, Ldb.Other....          

         ]);
   

      ADOCommand1.Execute;


sniknik   (2007-01-29 11:17:00) [1]

> Поэтому наличие апострофа в строке приводит к вымиранию команды.
можно задублировать кавычки внутри строки,  как и в дельфе, тогда все будет нормально...
но к легкости понимания и эффективности кода это не приведет...

меня одно только использование Format в [0] подобном виде коробит просто, ужас какойто... а потом начнут подобное в циклы вставлять на для множественных вставок и "плакать", что медленно работает.


Desdechado   (2007-01-29 10:51:00) [2]

Olivetti   (29.01.07 01:36) [2]
Там и проверять нечего, и так все ясно. Апостроф является ограничителем строковых констант. Поэтому наличие апострофа в строке приводит к вымиранию команды.
ADOCommand1.CommandText := 'INSERT INTO Informations(a,b) VALUES(:P0, :P1)';
ADOCommand1.Parameters.ParamByName('P0').Value:=1;
...
...Execute;


Olivetti   (2007-01-29 01:36:00) [3]

ADOCommand1.CommandText := ...;
ShowMessage(ADOCommand1.CommandText); // Посмотри, проверь корректность синтаксиса с точки зрения SQL сервера
ADOCommand1.Execute;


Desdechado   (2007-01-28 12:36:00) [4]

Уж сколько раз твердили миру...
Параметры использовать. Через них хоть черта протолкнуть можно...


Наверх

Титульная страница Поиск, карта сайта Написать письмо