Страница 1 из 2

База данных Mysql

СообщениеДобавлено: 24.04.2010 10:23:42
whs
В общем появилась необходимость создания такой вот базы. Поиск информации на эту тему и чтение официальной вики не помогли. Нашел пример Здесь но что то мне кажется там не совсем правильным. Вот и хотелось бы найти здесь Учителя кто возьмет ученика?

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

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

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

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

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

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


Из проблем DBCombobox хочу список в него поместить а появляется только первая запись из 10. Я так понимаю Items список загружать надо как то по другому. Пробовал еще DBLookupComboBox тоже остается пустой.

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

СообщениеДобавлено: 26.04.2010 16:23:44
FeodoR
У меня получилось только вот с таким заполнением:

Код: Выделить всё
while not SQLQuery1.EOF do
   begin
    DBComboBox1.Items.Add(SQLQuery1.FieldByName(DBComboBox1.DataField).Value);
    SQLQuery1.Next;
   end;
SQLQuery1.First;
DBComboBox1.Items[0];

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

СообщениеДобавлено: 26.04.2010 16:36:53
whs
А как сделать запрос вида
Код: Выделить всё
("SELECT info, title, id, author, date FROM archive WHERE category='news' or 'about'")
чтоб из таблицы вытащить только строки у которых поле category равно news или about?

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

СообщениеДобавлено: 26.04.2010 18:38:36
FeodoR
Можно вот так:
Где-нибудь в интерфейсной секции:
Код: Выделить всё
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;

Как-то так. Если нигде с кавычками не напутал, всё будет.

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

СообщениеДобавлено: 27.04.2010 06:10:51
Light13
FeodoR писал(а):Если нигде с кавычками не напутал

Используйте параметры, без них отгребете как нить по полной :)

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

СообщениеДобавлено: 27.04.2010 08:16:46
FeodoR
Не зна-а-аю :) :) :)
Я в своём проекте модуль написал и забыл. :)
Но у меня база - не основное. Она у меня как bootstrap идёт. :) Настройки с параметрами считал и понеслось. :)
Но Вы, скорее всего, правы.

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

СообщениеДобавлено: 27.04.2010 08:47:46
whs
Ну раз такое дело то не хотелось бы отгрести по полной кстати в той статье в комментариях тоже советуют использовать параметры может увидеть вариант с использованием параметров?

А какие параметры и настройки модуль содержит можно код модуля посмотреть?

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

СообщениеДобавлено: 27.04.2010 09:22:47
Light13
Код: Выделить всё
  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 с условиями с полями типа дата/время не используя параметры можем получить ошибку на клиентском компьютере, где другой формат даты/времени используется.
Проверено на собственной шкуре :)

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

СообщениеДобавлено: 27.04.2010 13:38:17
FeodoR
А при выполнении SQLQuery1.Params.Add/Clear и т.д. работает? Только design-time не удобно.

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

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


У меня не заработало, значит не работает.

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

СообщениеДобавлено: 28.04.2010 09:36:49
Light13
whs писал(а):У меня не заработало, значит не работает

Все прекрасно работает.
Параметры не нужно добавлять вручную, список формируется из SQL.
Мой пример выше полностью рабочий. :)

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

СообщениеДобавлено: 28.04.2010 11:25:52
whs
Ну пример да рабочий. Я просто не полностью понял что SQLQuery1.Params.Add/Clear формируется из запроса :)

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

СообщениеДобавлено: 08.05.2010 15:03:45
whs
Опять спрошу то на что я так и не нашел ответа есть некое поле называется оно Состав в этом поле перечислены через запятую компоненты Медь Цинк Олово. Так вот я чего-то не пойму как составить запрос чтоб найти и вывести все записи где есть допустим Медь. Я или плохо искал или силами MySQL такое сделать нельзя но скорей первое чем второе. Есть мысль что нужно использовать LIKE я правильно мыслью?