Текущий архив: 2003.09.29;
Скачать: CL | DM;
Вниз
Проблема с ковычкой Найти похожие ветки
← →
kostik78ua (2003-09-09 14:19) [0]Мастера! Странный глюк:
Выполнить команду типа
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("insert into Table1 (id, name) values (1, ""Лук"яненко"")");
Query1.ExecSQL;
Данная команда проходит, но если я работаю с трехуровневой технологией
ClientDataSet1.Close;
ClientDataSet1.CommandText := "insert into Table1 (id, name) values (1, ""Лук"яненко"")";
ClientDataSet1.Execute;
Выдает ошибку что-то типа "непарное количество кавычек".
После тестирования оказалось что проблема в двойной кавычке. Причем, если бы было, например:
insert into Table1 (id, name) values (1, "ООО "Колос"")
или
insert into Table1 (id, name1, name2) values (1, "Лук"яненко", "Дем"яненко")
то оно бы прокатывает, т.к. четное кол-во кавычек (если брать всю строку целиком, начиная от insert до закрывающей скобки).
Кто-нибудь натыкался на подобные глюки?
← →
DenK_vrtz © (2003-09-09 14:25) [1]chr(39) или #39 - решит проблему
← →
Nikolay M. © (2003-09-09 14:29) [2]Это не глюк. В SQL в строках кавычка должна заменяться на две кавычки подряд либо слэшироваться (зависит от СУБД).
ПС
А вообще, ИМХО, у тебя в принципе подход неверный - ты с клиента оперируешь непосредственно данными, что нарушает идеологию многозвенки, т.к. ты проскакиваешь один уровень - уровень RDM.
← →
kostik78ua (2003-09-09 14:54) [3]>> Nikolay M
Дело в том что одинарные ковычки у меня дублируются :
>> ClientDataSet1.CommandText := "insert into Table1 (id, name) values (1, ""Лук"яненко"")";
А вот двойная ковычка должна распознаваться как символ. И она распознается в двухуровневой технологии, но не в трехуровневой.
← →
Nikolay M. © (2003-09-09 15:23) [4]
> двойная ковычка должна распознаваться как символ
Дык тут разберешь... Где двойная, а где одинарная...
Btw, у меня тоже что-то было с двойной кавычкой у MS SQL...
Хотя вот такое в SQL Explorer прокатывает:
INSERT INTO city (id_city, name, phone_prefix, sequence, enabled)
VALUES (4, "12"124", "1234", 4, 1)
Нет, все-таки избавляйся от желания писать SQL-запросы на клиенте. Вот уже первый затык, а сколько их еще будет...
← →
kostik78ua (2003-09-09 15:29) [5]Прошу прощения за неточность!
Глюк возникает если в insert-е есть двойнаяковычка и двоеточие (например в дате)
ClientDataSet1.CommandText := "insert into Table1 (id, name, date1) values (1, ""Лук"яненко"", ""01.01.2003 00:00:00"")";
Глюк!
Причем, поэкспериментировал:
ClientDataSet1.CommandText := "insert into Table1 (id, name, date1) values (1, ""Лук"яненко"", ""01.01.2003 00 ::00 ::00"")";
Прокатило!
← →
Andriy Tysh © (2003-09-09 15:34) [6]ClientDataSet1.CommandText := "insert into Table1 (id, name) values (1, "+
QuotedStr("Лук"яненко")+")";
или используй #39
← →
Andriy Tysh © (2003-09-09 15:34) [7]ClientDataSet1.CommandText := "insert into Table1 (id, name) values (1, "+
QuotedStr("Лук"яненко")+")";
или используй #39
← →
Andriy Tysh © (2003-09-09 15:34) [8]ClientDataSet1.CommandText := "insert into Table1 (id, name) values (1, "+
QuotedStr("Лук"яненко")+")";
или используй #39 или Chr(39)
>см. DenK_vrtz © (09.09.03 14:25) [1]
← →
Andriy Tysh © (2003-09-09 15:36) [9]>>МОДЕРАТОР:Сорри, это не спам-не ту кнопку нажимал!
:)
← →
Nikky © (2003-09-09 17:58) [10]
> kostik78ua (09.09.03 15:29) [5]
вам же говорят грамотные вещи:
>
> Nikolay M. © (09.09.03 15:23) [4]
Страницы: 1 вся ветка
Текущий архив: 2003.09.29;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.016 c