Запросы MySQL в лазарусе [Решено]

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Запросы MySQL в лазарусе [Решено]

Сообщение sign » 26.06.2011 15:04:57

Подключил базу MySQL посредством библиотеки SQLDB.
Использую TMySQL50Connection, TSQLTransaction и TSQLQuery.
В приведённом запросе на втором ExecSQL - ошибка - исключение EDatabase Error
Затем идет сообщение, что "Cannot open a non-select statement"
Код: Выделить всё
procedure TDM.MakeMonthTable(_Date: TDate; _Level: Integer);
var Y, M: Integer;
    i: Integer;
begin
  Y := YearOf(_Date);
  M := MonthOf(_Date);
  qTmp.SQL.Clear;
  qTmp.SQL.Add('TRUNCATE months;');
  qTmp.ExecSQL;
  qTmp.SQL.Clear;
  qTmp.SQL.Add('INSERT INTO months(Yb, Mb) VALUES');
  for i := 1 to _Level-1 do begin
    qTmp.SQL.Add(Format('(%d, %d),', [Y, M]));
    _Date := SysUtils.IncMonth(_Date, -1);
    Y := YearOf(_Date);
    M := MonthOf(_Date);
  end;
  qTmp.SQL.Add(Format('(%d, %d);', [Y, M]));
  qTmp.ExecSQL;
  qTmp.Open;
end;

Содержание выполняемого SQL
Код: Выделить всё
INSERT INTO months(Yb, Mb) VALUES
(2011, 6);


Что не так я делаю?

Lazarus v0.9.31
FPC 2.4.4
SVN: 31267
i386-win32-win32/win64
Последний раз редактировалось sign 26.06.2011 18:48:04, всего редактировалось 1 раз.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Запросы MySQL в лазарусе

Сообщение Vadim » 26.06.2011 15:24:02

sign
Уже раз пятьсот тут, наверное, писали, что Open - это для запросов типа SELECT, потому что только SELECT формирует набор данных, который открывает метод Open.
А у Вас там что за фигня в тексте запроса?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Запросы MySQL в лазарусе

Сообщение WAYFARER » 26.06.2011 15:28:25

Код: Выделить всё
qTmp.ExecSQL;
qTmp.Open; //Зачем?

sign писал(а): "Cannot open a non-select statement"

У вас запрос не результирующий
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Запросы MySQL в лазарусе

Сообщение sign » 26.06.2011 16:45:31

Vadim писал(а):sign
Уже раз пятьсот тут, наверное, писали, что Open - это для запросов типа SELECT, потому что только SELECT формирует набор данных, который открывает метод Open.
А у Вас там что за фигня в тексте запроса?

Не, ну чё за фигня.
Программа стала кушать замечательно SQL запросы.
Естественно, open убрал.

Но вылетала-то на ExecSQL!
Я на данной строке ставил точку останова и F8 - был вылет.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru