База данных Mysql

Форум для изучающих FPC и их учителей.

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

База данных Mysql

Сообщение whs » 24.04.2010 10:23:42

В общем появилась необходимость создания такой вот базы. Поиск информации на эту тему и чтение официальной вики не помогли. Нашел пример Здесь но что то мне кажется там не совсем правильным. Вот и хотелось бы найти здесь Учителя кто возьмет ученика?
Последний раз редактировалось whs 27.04.2010 11:27:38, всего редактировалось 3 раз(а).
Аватара пользователя
whs
новенький
 
Сообщения: 28
Зарегистрирован: 03.04.2010 18:07:44

Re: База данных Mysql

Сообщение FeodoR » 24.04.2010 14:30:54

Привет! Ну а какие проблемы? В принципе в том топике нормально написано. Или есть вопросы касательно именно создания БД?

Могу (если есть желание) поделиться модулем работы с mysql...
Аватара пользователя
FeodoR
новенький
 
Сообщения: 59
Зарегистрирован: 16.04.2010 12:11:34
Откуда: MSK, ЮАО

Re: База данных Mysql

Сообщение whs » 26.04.2010 15:37:32

FeodoR писал(а):Привет! Ну а какие проблемы? В принципе в том топике нормально написано. Или есть вопросы касательно именно создания БД?

Могу (если есть желание) поделиться модулем работы с mysql...


Из проблем DBCombobox хочу список в него поместить а появляется только первая запись из 10. Я так понимаю Items список загружать надо как то по другому. Пробовал еще DBLookupComboBox тоже остается пустой.
Аватара пользователя
whs
новенький
 
Сообщения: 28
Зарегистрирован: 03.04.2010 18:07:44

Re: База данных Mysql

Сообщение FeodoR » 26.04.2010 16:23:44

У меня получилось только вот с таким заполнением:

Код: Выделить всё
while not SQLQuery1.EOF do
   begin
    DBComboBox1.Items.Add(SQLQuery1.FieldByName(DBComboBox1.DataField).Value);
    SQLQuery1.Next;
   end;
SQLQuery1.First;
DBComboBox1.Items[0];
Аватара пользователя
FeodoR
новенький
 
Сообщения: 59
Зарегистрирован: 16.04.2010 12:11:34
Откуда: MSK, ЮАО

Re: База данных Mysql

Сообщение whs » 26.04.2010 16:36:53

А как сделать запрос вида
Код: Выделить всё
("SELECT info, title, id, author, date FROM archive WHERE category='news' or 'about'")
чтоб из таблицы вытащить только строки у которых поле category равно news или about?
Аватара пользователя
whs
новенький
 
Сообщения: 28
Зарегистрирован: 03.04.2010 18:07:44

Re: База данных Mysql

Сообщение FeodoR » 26.04.2010 18:38:36

Можно вот так:
Где-нибудь в интерфейсной секции:
Код: Выделить всё
const SKav:string=Chr($27);

Чтение по запросу:
Код: Выделить всё
if SQLQuery1.Active then SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.ADD('SELECT info, title, id, author, date FROM archive WHERE category='+SKav+'news'+SKav+' or category='+SKav+'about'+SKav);
SQLQuery1.Open;

Как-то так. Если нигде с кавычками не напутал, всё будет.
Аватара пользователя
FeodoR
новенький
 
Сообщения: 59
Зарегистрирован: 16.04.2010 12:11:34
Откуда: MSK, ЮАО

Re: База данных Mysql

Сообщение Light13 » 27.04.2010 06:10:51

FeodoR писал(а):Если нигде с кавычками не напутал

Используйте параметры, без них отгребете как нить по полной :)
Аватара пользователя
Light13
постоялец
 
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Re: База данных Mysql

Сообщение FeodoR » 27.04.2010 08:16:46

Не зна-а-аю :) :) :)
Я в своём проекте модуль написал и забыл. :)
Но у меня база - не основное. Она у меня как bootstrap идёт. :) Настройки с параметрами считал и понеслось. :)
Но Вы, скорее всего, правы.
Аватара пользователя
FeodoR
новенький
 
Сообщения: 59
Зарегистрирован: 16.04.2010 12:11:34
Откуда: MSK, ЮАО

Re: База данных Mysql

Сообщение whs » 27.04.2010 08:47:46

Ну раз такое дело то не хотелось бы отгрести по полной кстати в той статье в комментариях тоже советуют использовать параметры может увидеть вариант с использованием параметров?

А какие параметры и настройки модуль содержит можно код модуля посмотреть?
Аватара пользователя
whs
новенький
 
Сообщения: 28
Зарегистрирован: 03.04.2010 18:07:44

Re: База данных Mysql

Сообщение Light13 » 27.04.2010 09:22:47

Код: Выделить всё
  SQLQuery1.Close;

  //параметры начинаются с двоеточия
  SQLQuery1.SQL.Text:='SELECT info, title, id, author, date FROM archive WHERE category = :Param0 or category = :Param1';

  //установим типы данных у параметров
  SQLQuery1.Params.ParamByName('Param0').DataType:=ftString;
  SQLQuery1.Params.ParamByName('Param1').DataType:=ftString;

  //Присвоим значения
  SQLQuery1.Params.ParamByName('Param0').Value:='news';
  SQLQuery1.Params.ParamByName('Param1').Value:='about';

  SQLQuery1.Open;


запрос и типы параметров можно сформировать в дизайн-тайм

при формировании SQL с условиями с полями типа дата/время не используя параметры можем получить ошибку на клиентском компьютере, где другой формат даты/времени используется.
Проверено на собственной шкуре :)
Аватара пользователя
Light13
постоялец
 
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Re: База данных Mysql

Сообщение FeodoR » 27.04.2010 13:38:17

А при выполнении SQLQuery1.Params.Add/Clear и т.д. работает? Только design-time не удобно.
Аватара пользователя
FeodoR
новенький
 
Сообщения: 59
Зарегистрирован: 16.04.2010 12:11:34
Откуда: MSK, ЮАО

Re: База данных Mysql

Сообщение whs » 27.04.2010 14:06:14

FeodoR писал(а):А при выполнении SQLQuery1.Params.Add/Clear и т.д. работает? Только design-time не удобно.


У меня не заработало, значит не работает.
Аватара пользователя
whs
новенький
 
Сообщения: 28
Зарегистрирован: 03.04.2010 18:07:44

Re: База данных Mysql

Сообщение Light13 » 28.04.2010 09:36:49

whs писал(а):У меня не заработало, значит не работает

Все прекрасно работает.
Параметры не нужно добавлять вручную, список формируется из SQL.
Мой пример выше полностью рабочий. :)
Аватара пользователя
Light13
постоялец
 
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Re: База данных Mysql

Сообщение whs » 28.04.2010 11:25:52

Ну пример да рабочий. Я просто не полностью понял что SQLQuery1.Params.Add/Clear формируется из запроса :)
Аватара пользователя
whs
новенький
 
Сообщения: 28
Зарегистрирован: 03.04.2010 18:07:44

Re: База данных Mysql

Сообщение whs » 08.05.2010 15:03:45

Опять спрошу то на что я так и не нашел ответа есть некое поле называется оно Состав в этом поле перечислены через запятую компоненты Медь Цинк Олово. Так вот я чего-то не пойму как составить запрос чтоб найти и вывести все записи где есть допустим Медь. Я или плохо искал или силами MySQL такое сделать нельзя но скорей первое чем второе. Есть мысль что нужно использовать LIKE я правильно мыслью?
Аватара пользователя
whs
новенький
 
Сообщения: 28
Зарегистрирован: 03.04.2010 18:07:44

След.

Вернуться в Обучение Free Pascal

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

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

Рейтинг@Mail.ru