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

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

Dinamic SQL error -206 [D7, IB6.x]


tytus ©   (2005-12-28 11:51:00) 

Добрый день господа. только начинаю осваивать SQL. Хочу переделать свою прогу для локальных БД (парадокс) на клиент-сервер.Имеется IBDataBase, IBTransaction и IBQuery. Делаю так:
IBQuery.Active:=false;
try
 IBQuery.SQL.Add('INSERT INTO MainTable(Column1,Column2)
  Values("Name",123)');
 IBQuery1.Open;
except
 IBTransaction.Rollback;
end;
Ругается кодом -206 Unknow Column 'Name'.
Хотя, в SQL-проводнике такой запрос выполняется, и данные заносятся в таблицу.
В чем тут дело, подскажите плиз.


Desdechado   (2005-12-28 17:41:00) [1]

> какие именно кавычки?
сорри, под кавычками я всегда понимаю двойные, а одинарные - апострофы


Johnmen   (2005-12-28 16:41:00) [2]

>Курдль ©   (28.12.05 16:32) [10]

>Во всяком случае со строкой может и пройдет, а если там нужна дата?

Ну мы же вроде бы чётко разговариваем в рамках строки. Без всяких "если".

>Так что лучше делать через параметры и не придумывать велосипед!

Параметры завсегда правильнее.


Курдль   (2005-12-28 16:32:00) [3]


> Johnmen ©   (28.12.05 15:48) [9]
> Ну а чтобы вообще не зависеть ни от чего, надо, как я сказал
> в [2] пункт 4.


Я бы так категорично не заявлял. Во всяком случае со строкой может и пройдет, а если там нужна дата? Какие еще кавычки применять?
Так что лучше делать через параметры и не придумывать велосипед!


Johnmen   (2005-12-28 15:48:00) [4]

>Desdechado ©   (28.12.05 15:42) [8]
>IB6 в 1 диалекте прекрасно кушает кавычки, в 3-м не знаю, но об этом автор умалчивает

Почему ты не говоришь, какие именно кавычки? Ведь в этом всё дело.
Ну а чтобы вообще не зависеть ни от чего, надо, как я сказал в [2] пункт 4.


Desdechado   (2005-12-28 15:42:00) [5]

Johnmen ©   (28.12.05 12:52) [6]
IB6 в 1 диалекте прекрасно кушает кавычки, в 3-м не знаю, но об этом автор умалчивает

> А параметры "сервер" подставляет ?
начинка параметров может быть любая, удовлетворяющая типу данных
а вот начинка SQL-запроса не может быть любой, например символы #13#10 явно будут интерпретироваться соответственно


msguns   (2005-12-28 14:33:00) [6]

>Desdechado ©   (28.12.05 12:43) [5]
>попробуй параметры использовать, утебя мусор в переменных, который запутывает сервер

Ух ты ! А параметры "сервер" подставляет ?


Johnmen   (2005-12-28 12:52:00) [7]

>кавычки могут быть и одинарные, и двойные
>главное, чтоб одинаковые в одном запросе :)

А вот и нет. Ибо смотри, какая у него БД, и какой диалект.


Desdechado   (2005-12-28 12:43:00) [8]

> Кавычки д.б. двойные одинарные
кавычки могут быть и одинарные, и двойные
главное, чтоб одинаковые в одном запросе :)

> VALUES("'+MainFm.GlobalExchName+'","'+GRP.GRPNAME+'")';
попробуй параметры использовать, утебя мусор в переменных, который запутывает сервер


tytus   (2005-12-28 12:13:00) [9]

[2]
Да это я по-памяти написал...
 2.IBQuery.SQL.Clear;-есть у меня.
 1. а что писать - IBQuery.ExecuteSQL;?
 3.IBTransaction.Commit;?
 4. Писал по всякому. А вообзе-то у меня так:
    s:='INSERT INTO MAINTABLE(ExchName,GroupNumber)
        VALUES("'+MainFm.GlobalExchName+'","'+GRP.GRPNAME+'")';
    IBQuery.SQL.Add(s);
И всеравно ругается.


msguns   (2005-12-28 12:10:00) [10]

1. В IBQuery1.Open, похоже, целых две ошибки.
Первая. Может все-таки '1' лишняя ?
Вторая. Для модифицирующих запросов (Insert/Update/Delete) используется метод ExecSQL (на что и намекал Джонмэн)


Johnmen   (2005-12-28 12:01:00) [11]

Тут у тебя много ошибок.
1. Обрати внимание на  IBQuery1.Open; это неверно.
2. Нет очистки свойства SQL, поэтому строку будут накапливаться.
3. Нет подтверждения транзакции.
4. Ну и наконец по поводу -206. Кавычки д.б. двойные одинарные. Почему? Учите матчасть...:)


Курдль   (2005-12-28 11:58:00) [12]

Может в "Name" не двойные кавычки, а апострофы?..


Наверх

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