Lazarus + MySQL

Вопросы программирования и использования среды Lazarus.

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

Ответить
Alana
новенький
Сообщения: 24
Зарегистрирован: 08.09.2010 16:29:13

Lazarus + MySQL

Сообщение Alana »

Создаю новое приложение для работы с базой данных MySQL. Поключение происходит на ура, но запросы не получается сделать. Пишу элементарный запрос "SELECT * from abonents". Пишет "SQL Error: no database selected". Что это может быть? Заранее спасибо за ответ.
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Нужно выбрать базу, например запросом "use basename"
Alana
новенький
Сообщения: 24
Зарегистрирован: 08.09.2010 16:29:13

Сообщение Alana »

Писала в запросе так:
"USE demand;
SELECT * from abonents;"
Не работает.

"USE demand SELECT * from abonents;" - и в таком виде также не работает.

P.S. demand - название базы, abonents - название таблицы.
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

"USE demand;
SELECT * from abonents;" - разбить на 2 запроса. Точку с запятой ставить не нужно. Это синтаксис для консольного клиента, он не совсем подходит.
Alana
новенький
Сообщения: 24
Зарегистрирован: 08.09.2010 16:29:13

Сообщение Alana »

Если писать такой запрос:
USE demand
SELECT * from abonents
он пишет, что ошибка в синтаксисе во 2-ой строке.

И еще такой вопрос по поводу компонентов Zeos. Как можно к ним обращаться? Ну к примеру мне нужно, чтобы при нажатии на кнопку разрывалось соединение с базой. Как обычно делаю событие нажатия кнопки и прописываю код:
ZConnection1.Connected:=false;

И в ответ он мне пишет такую гадость:
"MainUnit.pas(45,15) Error: Identifier not found "ZConnection1""

У меня в одном приложении компонены лежат в отдельном модуле, но к форме, где кнопка, я его подключаю (uses DataModule;). В другом приложении компоненты лежат прям на форме, но эффект в обоих случах одинаковый.

Вот как после этого с этим Лазарем общаться? :wink:
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Alana писал(а):Вот как после этого с этим Лазарем общаться? :wink:

Я вас уверяю, Лазарус здесь совсем не причём.

У вас в модуле отсутствует идентификатор с именем ZConnection1.
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Код: Выделить всё

USE demand
SELECT * from abonents

2 разных запроса, и делать их нужно отдельно.
Alana
новенький
Сообщения: 24
Зарегистрирован: 08.09.2010 16:29:13

Сообщение Alana »

Mr.Smart писал(а):Я вас уверяю, Лазарус здесь совсем не причём.

Да это я так, с шуткой :) Я так-то против него ничего не имею, но в делфи все-таки все четче отрабатывается :)
У вас в модуле отсутствует идентификатор с именем ZConnection1.

Хм, все, разобралась ) Сама протупила) Обращалась ZConnection1.ZQuery и еще хотела, чтобы все работало :D Ну конец рабочего дня, голова крыша поехала) И еще мне показалось, что прежде чем обращаться к компонентам привязанного модуля нало откомпилировать прогрумму. Ну может я что-то попутала :)
GAMER писал(а):2 разных запроса, и делать их нужно отдельно.

USE demand не делается отдельно. Пишет "Can not open ResultSet". Прям напасть какая-то с запросами :lol:

Добавила через несколько минут:
Все, сделала ) Извините за тупость) Там, оказывается, в запросе нужно писать demand.abonents, то есть сперва указать базу, а потом таблицу. Вот я протупила :)
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Alana писал(а):Там, оказывается, в запросе нужно писать demand.abonents, то есть сперва указать базу, а потом таблицу.

Не обязательно.
Alana писал(а):USE demand не делается отдельно. Пишет "Can not open ResultSet". Прям напасть какая-то с запросами

Ну да. Всё вам правильно пишет. Данный запрос не возвращает таблицу. Для выполнения подобных запросов есть метод ExecSQL :wink:
Alana
новенький
Сообщения: 24
Зарегистрирован: 08.09.2010 16:29:13

Сообщение Alana »

Mr.Smart писал(а):Не обязательно.

Хм, а по-другому я тогда не знаю как ))))
Ну да. Всё вам правильно пишет. Данный запрос не возвращает таблицу. Для выполнения подобных запросов есть метод ExecSQL :wink:

Ммммм..... Значит такое я тоже не знаю............ :(
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

Alana писал(а):Ммммм..... Значит такое я тоже не знаю............ :(

Это есть в книжках по Delphi, кстати. Не расстраивайтесь, вы на правильном пути. :)
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Alana писал(а):Хм, а по-другому я тогда не знаю как

Если у Вас работа идёт только с одной базой, то её название указывается в свойстве ZConnection1.Database. После этого писать название в запросе совершенно не обязательно.
Alana
новенький
Сообщения: 24
Зарегистрирован: 08.09.2010 16:29:13

Сообщение Alana »

Mr.Smart писал(а):Ну да. Всё вам правильно пишет. Данный запрос не возвращает таблицу. Для выполнения подобных запросов есть метод ExecSQL :wink:

Точно, сейчас вспомнила про это.
Vadim писал(а):Если у Вас работа идёт только с одной базой, то её название указывается в свойстве ZConnection1.Database. После этого писать название в запросе совершенно не обязательно.

Хм, а я выбирала только в свойстве Сatalog базу данных. Да, прописав в Database свою базу, можно не прописывать в запросе имя базы. Спасибо :) Теперь все работает нормально ))
Ответить