MySQL etc...

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

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

MySQL etc...

Сообщение Troublemaker » 09.07.2019 14:46:10

Здравствуйте, коллеги.
10 или около того лет я сюда не заходил - с момента, как закончил писать диплом. Задачу диплома я до конца не реализовал, но опыт получил приличный и защита прошла "на ура".
Довольно долго общался с мускулем из OpenOffice, но в конце концов возможностей офиса хватать перестало - не поддерживаются курсоры, в редакторе запросов в принципе нет поиска по тексту и т.д. Ну, те, кто пробовал, поймут.
Скриптов наработанных очень много, и пора переходить на новый уровень - делать приложения, которые будут реализовывать недостающую функциональность. Проблема в том, что удалось найти только один более-менее полный туториал, в котором до чёрта битых ссылок, ведущих на несуществующие уже страницы и просто выпущенных кусков кода, без которых оставшееся лишено смысла.
Пример:
Код: Выделить всё
procedure TtrymysqlForm1.ConnectButtonClick(Sender: TObject);
(* Connect to MySQL using user data from Text entry boxes on Main Form *)
var strg: string;

begin

dummy1 :=  trymysqlForm1.HostEdit.text+#0;
host := @dummy1[1];
dummy2 := trymysqlForm1.UserEdit.text+#0;
user := @dummy2[1] ;

Это я что-то забыл, или FP с лохматых времен умеет использовать неописанные переменные? Нигде в статье нет объяснений, что это за dummy, а полный исходник (trydbpp) напрочь отсутствует. (я дал ссылку на русский перевод туториала, но и на других языках всё то же самое)

В общем, извините за многословное вступление, но буду весьма признателен, если кто-нибудь направит на путь истинный, то бишь, на реально полный туториал (язык текста не имеет значения, главное, чтобы не иероглифы - как-нибудь справлюсь с переводом), где можно было бы понять "что куда тыкать", чтобы получить более-менее осмысленное приложение, умеющее работать с БД MySQL.

Конечная цель - написать собственный интерфейс для базы OCS-NG Inventory, потому как штатная веб-морда старых версий не позволяет сделать многое из нужного, а в новых версиях вместо осмысленного интерфейса видим "вебдванольненько" сделанную чушь, зато с "материал дизайн".

Спасибо всем, кто откликнется.

p.s. если где-нибудь здесь на форуме есть тема с незаумным обсуждением этого вопроса, буду признателен и за ссылку на тему/темы
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: MySQL etc...

Сообщение olegy123 » 09.07.2019 16:52:53

Основная сложность даже для профи это найти нормальный libmysqlclient.dll (он же Connector/C)
с разделением на MySQL и MariaDB вообще жуть полная. Еще есть отдельны либлы для .Net точно с таким же названием. Видно что мастера этого движка - нацисты, сатанисты и люто ненавидят сторонних производителей.
Но libmysqlclient.dll можно найти в дистрибутиве, при инсталляции БД. Важно чтобы libmysqlclient была той же разрядностью (x32/x64) что и сама программа.
соответственно нужны править path к ним в системе, если windows. Тут крадется еще одна тонкость, windows если libmysqlclient есть еще где то и он загружен(бывают идут программы с такой же либлой но версии разные, отсюда и екшепшены будут сыпатся как из рога изобилия), то винда будет подсовывать уже загруженную в кэше или лежащую поближе в списке локальной переменной Path!!!

Есть умельцы которые могут нативный компонент состряпать, тот лишен всех этих прелестей, но таких давно не встречал.

Добавлено спустя 3 минуты 1 секунду:
если с этими приколами справились..
то проще подсмотреть как делают коучеры в youtube.

Lazarus + Database MySQL (Insert Data)

либо со сторонними компонентами типа ZeosDbo
olegy123
энтузиаст
 
Сообщения: 1442
Зарегистрирован: 25.02.2016 12:10:20

Re: MySQL etc...

Сообщение Troublemaker » 09.07.2019 17:37:48

olegy123 писал(а):коучеры в youtube

Увы, вряд ли смогу себя заставить сделать это - не видел ни одного достойного "учебника" ни по одной теме кроме единоборств, где действительно проще 1 раз увидеть, чем сто раз прочесть.
....
честно попробовал посмотреть два "ваших" видео. Удивило, что оба они без звука, и ощущение было ожидаемое - что-то делается, но что и зачем, почти непонятно. Под вторым видео есть ссылка, но она ведет на выставленный на продажу домен.
Непонятка в том, что не ясно, какие шаги обязательны, а какие - декоративные или зависят от используемой среды. Для отладки скриптов я использую mysql workbench, благо, что она кроссплатформенная, поэтому php myadmin мне не очень актуально, хотя когда-то пробовал и с ним повозиться.

Библиотека есть:
Код: Выделить всё
$ locate libmysqlclient
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20.3.13
/usr/share/doc/libmysqlclient20
/usr/share/doc/libmysqlclient20/NEWS.Debian.gz
/usr/share/doc/libmysqlclient20/changelog.Debian.gz
/usr/share/doc/libmysqlclient20/copyright
/var/lib/dpkg/info/libmysqlclient18:i386.list
/var/lib/dpkg/info/libmysqlclient18:i386.postrm
/var/lib/dpkg/info/libmysqlclient20:amd64.list
/var/lib/dpkg/info/libmysqlclient20:amd64.md5sums
/var/lib/dpkg/info/libmysqlclient20:amd64.shlibs
/var/lib/dpkg/info/libmysqlclient20:amd64.symbols
/var/lib/dpkg/info/libmysqlclient20:amd64.triggers

Код: Выделить всё
$ mysqld --version
mysqld  Ver 5.7.26-0ubuntu0.18.04.1 for Linux on x86_64

(под виндой пока не требуется - не могу избавиться на работе от "десятки", поэтому большую часть задач решаю внутри LSW :-) )
и даже пример из здешней статьи сумел запустить, но "не торт", нужна какая-то основа, даже не могу точно сформулировать - не вижу взаимосвязей между отдельными компонентами. Могу слепо выложить на форму транзакцию, подключение и что там еще, но не понимаю, зачем это нужно, а значит и самостоятельно продвигаться не могу. (да-да, я понимаю, что это мои личные проблемы)
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: MySQL etc...

Сообщение olegy123 » 10.07.2019 12:42:02

Если с линухом, то там строже контроль версии.

вот нашел пример с Mysql
http://www.freepascal.ru/article/lazaru ... 416150500/

https://wiki.freepascal.org/MySQLDatabases

Я скинул как пример, в ютуюе можно найти хороших рассказчиков, к сожалению русский сегмент не сильно развит.

Troublemaker писал(а):Непонятка в том, что не ясно, какие шаги обязательны, а какие - декоративные или зависят от используемой среды.
lazarus позиционирует как "кроссплатформенная разработка", т.е. в среде lazarus/freepascal будет все одинаково на всех платформах. также подход в SQLdb будет одинаковым.
olegy123
энтузиаст
 
Сообщения: 1442
Зарегистрирован: 25.02.2016 12:10:20

Re: MySQL etc...

Сообщение Troublemaker » 10.07.2019 12:54:03

olegy123 писал(а):вот нашел пример с Mysql

Да, спасибо.
Оба этих примера я уже видел. Про первый уже упоминал, там как раз ссылка в конце статьи ведёт в никуда. Второй тоже пробовал.
Похоже, что больше ничего и нет - всё остальное либо корявые переводы всё того же туториала с неведомыми dummy-переменными, либо те же переводы, но выдаваемые за свое творчество, которые за версту воняют подстрочником. Пичалька.

Но еще раз спасибо за попытку помочь!
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: MySQL etc...

Сообщение olegy123 » 10.07.2019 13:11:46

Troublemaker писал(а):не вижу взаимосвязей между отдельными компонентами.

как видите задачу?

есть подключение TMySQL50Connection (элемент связи) - он связывает особенности подхода библиотеки libmysqlclient c обобщенным подходом для компонентов из SQLdb. Благодоря этому SQLdb может подключатся к разным базам данными MySQL/FirebirdSQL/PostgreSQL/SQLite/MSSQL и др. и иметь общий подход работы с данными(сделать запрос, получить данные, показать их в таблице и т.п.), так что можете легко смотреть как под Lazarus реализуют задачи с другими движками баз данных.

но никто не запрещает работать с библиотекой напрямую через библиотечные вызовы: mysql_init mysql_options mysql_list_fields и другие.

Добавлено спустя 2 минуты 28 секунд:
все что нужно положить на форму или DataModule TMySQL5XConnection прописать подключение, базу, пароль и активировать..
если TMySQL5XConnection перешел в активное состояние то - есть линк.

Добавлено спустя 1 минуту 30 секунд:
DataModule - это не визуальная форма(или контейнер под данные)

Добавлено спустя 3 минуты 23 секунды:
теперь нужно положить TSQLQuery
связать с линком SQLQuery.Connection:= сылка на TMySQL5XConnection
прописать запрос SQLQuery.SQL.Text:='Select ..'
И можно выполнить его..
SQLQuery.Open(он же SQLQuery.Active:=true)
либо SQLQuery.ExecSQL - в случае если не нужно выводить данные.
olegy123
энтузиаст
 
Сообщения: 1442
Зарегистрирован: 25.02.2016 12:10:20

Re: MySQL etc...

Сообщение GAMER » 11.07.2019 11:13:50

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


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 7

Рейтинг@Mail.ru