wunderwaffe: тупят другие (karliki)
доктор Вандершпигель ([personal profile] wunderwaffe) wrote2022-01-23 10:32 pm

Связка Lazarus+Zeos Access+MariaDB

Итак, есть лазарус, который пользует БД в xampp 3.2.1 через libmysql.dll. ВНЕЗАПНО эта связка перестает работать со словами "lazarus can not load default MySQL library ("libmysql.dll" or "libmysql.dll"). check your installation."

Копания, что производит такой результат, привели к файлу

C:\lazarus\fpc\3.2.0\source\packages\mysql\src\mysql.inc

повеселив строками

SErrDefaultsFailed = 'Can not load default MySQL library ("%s" or "%s"). Check your installation.';

(см выше сообщение) и

const
mysqllib = 'libmysql.dll';
mysqlvlib = 'libmysql.dll';

Выбери, бля, две таблетки. Так как чтобы колупаться в них надо еще перекомпилировать в fpc, да ну его нахуй еще пару часов впизду. Запихивания по советам в инете файла libmysql.dll в разные системные и Лазаруса директории, включая

c:\Users\AppData\Local\porno\hard\necrofilia\lazarus\

результатов не дали. Поэтому решыл поставить все новейшее

https://www.apachefriends.org/xampp-files/7.4.27/xampp-windows-x64-7.4.27-1-VC15-installer.exe

но оказалось что в xampp уже нет libmysql.dll и там блядь они на свет лезут mariadb. Поэтому пришлось скачивать непосредственно

https://dlm.mariadb.com/1902495/MariaDB/mariadb-10.4.22/winx64-packages/mariadb-10.4.22-winx64.zip

где искомая библиотека и была найдена под именем

c:\mariadb-10.4.22-winx64.zip\mariadb-10.4.22-winx64\lib\libmariadb.dll, отдельно здесь - https://disk.yandex.ru/d/RKqlSpwBEYB2wg

Доступ к БД теперь осуществляется через компоненты Zeos Access (я попытался переименовать libmariadb.dll в libmysql.dll но получил см. выше) вот так, например, для чтения данных -

1) компонент Zconnection1
свойства -
1. LibraryLocation == C:\lazarus\components\...\libmariadb.dll
2. Protocol == MariaDB-10
3. HostName == адрес, например localhost
4. Database, User, Password.
5. Connected == true

2) компонент ZReadOnlyQuery1
1. Connection == Zconnection1

Ну и код -

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.ZReadOnlyQuery1.Active:=false;
form1.ZReadOnlyQuery1.SQL.Clear;
form1.ZReadOnlyQuery1.SQL.Add('SELECT * FROM mess_lang WHERE id=6534 AND lang=1');
form1.ZReadOnlyQuery1.Active:=true;
form1.Caption:=form1.ZReadOnlyQuery1.FieldByName('header').AsString;
end;

Post a comment in response:

If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting