Delphi. MySQL. Реализуем поиск вхождений, регистрозависимый поиск, поиск точной фразы.

7

Сделать это довольно просто, опираясь на запросы SQL, которые я рассмотрел в предыдущем посте. Вот что у нас получится

2

А если поиск ничего не обнаружил, получим следующее

3

Итак, оформим такую панель поиска

1

Всего будет 3 типа поиска

-Поиск вхождений

-Точное соответствие

-Регистронезависимый поиск

Будем собирать ID записей, при нажатии на “Найти” будем ставить курсор на первую запись в найденной выборке, либо сообщать, что ничего не найдено.

При нажатии на стрелки вправо или влево будем перемещать курсор на соответствующие записи в общей выборке.

Перво-наперво создадим запросы, по аналогии с тем, как это мы делали в прошлом посте

Поиск вхождений

Continue reading

MySQL. Регистрозависимость поиска и поиск вхождений

Пусть у нас есть 2 строки в базе mysql

106

Регистро зависимый поиск

107

Регистро Независимый поиск

108

Поиск вхождений (регистро независимый)

110

Delphi. Рекурсивное отражение файловой директории в базе данных

103

Данный алгоритм использует рекурсивный обход директорий при помощи System.IOUtils для того, чтобы отразить файловую структуру в базе данных. Понадобилась мне такая штука, решил вывести это в отдельный пост. Вот что у нас получится.

102

А вот как мы это сделали

uses

Собственно основная рекурсивная функция, добавляющая файлы и папки в базу Continue reading

Delphi. Отражение папок файловой директории в базе данных

101

Допустим нам нужно записать файловую директорию \public\files\UserID\2016\28\10\temp в базу данных. Данный алгоритм запишет только папки директории, и не более. Чтобы полностью отразить директорию, нужен обход с рекурсивным алгоритмом, который я представлю чуть позже, в другом посте.

99

Я сделал это так. Для начала оптимизированный вариант

Прикол был с users_id, суть в том, что это поле содержит в себе внешний ключ к таблице пользователей, и если указать при вставке значение, которого нет, то выпадает ошибка. Поэтому тут внимательнее.  Continue reading

Delphi. UniGUI. Делаем авторизацию через СМС. Часть 2 – база данных и логика программы

5

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

33

34

После отправки кода, в случае корректного результата происходит переход на нужную страницу и уходит сообщение админу, либо открывается форма. Continue reading

Delphi. MySQL. Пример добавления даты и времени в базу данных

Как вариант можно хранить TDateTime в качестве строки. Допустим у нас в базе есть поле CreationDateTime varchar(45);

Обратно можно преобразовать с помощью StrTODateTime;

В чем разница между identifying and non-identifying relationships?

Теперь, собственно попробуем наладить взаимосвязи! Но прежде, разберемся с пунктирными и непунктирными линиями во взаимосвязях

18

 

Классные объяснения на английском находятся здесь. Больше всего мне понравилось вот это объяснение

A book belongs to an owner, and an owner can own multiple books. But the book can exist also without the owner and it can change the owner. The relationship between a book and an owner is a non-identifying relationship.

A book however is written by an author, and the author could have written multiple books. But the book needs to be written by an author it cannot exist without an author. Therefore the relationship between the book and the author is an identifying relationship.

Если книга может существовать без владельца, а она может, тогда  non-identifying relationship

Если книга не может существовать без автора,а она не может, тогда  identifying relationship

Технически это отражается следующим образом

identifying relationship:

non-identifying relationship:

То есть, в случае identifying в ключ ребенка встроен ключ родителя. А в случае non-identifying, в ключе ребенка нет ключа родителя.

MySQL. InnoSetup. “Тихая установка”. Добавляем Uninstall MySQL сервера при деинсталляции основной программы

Чтобы добавить возможность деинсталляции MySQL сервера при деинсталляции основной программы, нужно в код InnoSetup добавить следующую инструкцию

Код целиком, будет выглядеть следующим образом, он включает в себя инсталляцию основной программы, инсталляцию сервера базы данных и его конфигурирование, и его деинсталляцию при деинсталляции основной программы. Continue reading

MySQL. InnoSetup. “Тихая установка”. Загрузка своей базы данных при инсталляции

Продолжаю прошлую тему – устанавливать “тихо” MySQL сервер мы научились. Что дальше?

В данном посте посмотрим как при инсталляции сервера MySQL добавить в него свою базу данных. Для этого нам нужен собственно дамп базы, далее нужно дать команду серверу, после инсталляции создать пустую базу и загрузить в неё этот дамп.

Пусть у нас есть дамп базы под названием test_dump.sql – о том как его сделать я писал в другой статье, но если кратко и здесь, то

1 способ, через командную строку под администратором Windows

2 способ

-через WorkBench >DataExport > Export To Self Contained File

9

 

Итак, дамп у нас есть, остается придумать как его использовать в InnoSetup,

1-е изменение, которое я внес, это в сектор [Files]

2-е изменение, которое я внёс, это в сектор Run, нам нужно каким-то образом дать серверу mysql команду на создание пустой базы данных и импортирование в неё данных, это можно сделать следующим образом…

Полный код тихой инсталляции MySQL для InnoSetup

Continue reading

MySQL. “Тихая” установка при помощи InnoSetup

Когда нужна тихая установка? Например, при установке своей программы, которая опирается на базу данных, например, на mysql.

Разберем пример тихой установки 64 битного сервера MySQL в директорию C:\mysql. Импорт базы данных разберем в следующем посте. Работать в основном будем с Pascal Script, работа с InnoSetup, генерирующим Pascal Script достаточно проста, на мой взгляд.

Итак, нам понадобятся

установочный файл сервера MySQL, версия 5.5 

программа InnoSetup


За основу я взял код с сайта stackoverflow. Также мне помог сайт официальный сайт MySQL. И ещё одно сообщение на одном форуме.

Код установки на Pascal Script в InnoSetup выглядит так

Здесь важно прописать DataDir, чтобы потом не было проблем с конфигурированием, на следующем шаге.

Конфигурирование сервера выглядит так…

В изначальном коде со stackoverflow много лишнего и не рабочего. В частности способ смены пароля у меня не сработал, и я пошёл традиционным путем, через mysqladmin, в чистом виде,, как например, описано здесь. Пароль можно поменять таким образом, прописать, например в консоли

Но можно это завернуть в Pascal скрипт программы InnoSetup, и встроить это в общий код установки сервера MySQL

Ниже приведен пример для установки 64 битной версии MySQL сервера.

Скрипт, получившийся у меня в InnoSetup выглядит следующим образом


Continue reading