C/C++

C++Builder 10.3 Ошибка подключения к mysql

Использую на форме подключения к БД компонент TFDPhysMySQLDriverLink. Заполняю его значения. Связываю его с компонентом Connection. В Connection заполняю значения полей Password, UserName, Database. Ставлю свойство Connected=true; Пробую подключиться к БД. Выдается сообщение из блока try{} catch(...) "Ошибка подключения к базе данных!". Логин и пароль правильные. Имя локальной базы правильное. Библиотеку libmysqld.dll положил в папке икзешника, подключил правильно. Не понимаю что не так.
**
*****xamid *****
7 402
В папке приложения нужно создать 2 папки:
- share, туда перекопировать содержимое локальной конфигурации Мускула с файлами языков
- data, закиньте туда свою локальную базу Мускула

Обзовите свой компонент линковки проще, чтобы удобней писать, например
TFDPhysMySQLDriverLink *Link;
Если ваша библиотека для подключения с базой лежит в папке приложения, тогда перед подключением установите к ней путь и пропишите ID драйвера:
Link->VendorLib=GetCurrentDir()+"\\libmysqld.dll";
Link->DriverID="EmbededMySQL";

Далее нужно точно прописать все аргументы подключения к локальному Мускулу. Если хоть один
аргумент не прописан или неправильно прописан, то локального подключения не будет:
/*отключаем сеть, она не нужна в локальном подключении: */
Link->EmbeddedArgs->Add("--skip-networking");

/*отключаем тип таблиц innodb, т. к. на них локальная база не работает: */
Link->EmbeddedArgs->Add("--skip-innodb");

/*указываем папку с языками подключения: */
Link->EmbeddedArgs->Add("--language="+GetCurrentDir()+"\\share");

/*определяем корень приложения с коннектором: */
Link->EmbeddedArgs->Add("--basedir="+GetCurrentDir()+"\\");

/*определяем корень файлов базы данных: */
Link->EmbeddedArgs->Add("--datadir="+GetCurrentDir()+"\\data");

/*в коннекторе также прописываем ID драйвера: */
Connection->DriverName="EmbededMySQL";

/*скрываем окошко авторизации, т. к. подключение будет автоматическое: */
Connection->LoginPrompt=false;

Connection->Params->Password="my_password"; /*пароль*/
Connection->Params->UserName="my_user";/*пользователь БД*/
Connection->Params->Database="my_base";/*имя локальной базы*/

Connection->Connected=true; /*подключаемся к базе*/
Uluk Abdikadirov
Uluk Abdikadirov
37 945
Лучший ответ
*****xamid ***** Заполнил аргументы EmbeddedArgs. Подключение есть и главное окно поисковой формы открылось но при открытии таблицы не показывает текст и какие то вопросительные знаки ???
>Выдается сообщение из блока try { } catch(...) "Ошибка подключения к базе данных!".
Если бы ты вместо этого все же показывал изначальный (!) текст исключения, всем было бы гораздо легче. Прятать его надо только в релизе по соображениям безопасности, а в дебаге это какой-то выстрел в ногу.
*****xamid ***** проект не маленький, 8 мб чисто текстовики, вы уверены, что разберетесь?
а сервер бд работает?
Яша Сафронов
Яша Сафронов
71 603
*****xamid ***** Сервер не нужен. БД локальная, работает через конектор libmysqld.dll