
C/C++
C++Builder 10.3 Ошибка подключения к mysql
Использую на форме подключения к БД компонент TFDPhysMySQLDriverLink. Заполняю его значения. Связываю его с компонентом Connection. В Connection заполняю значения полей Password, UserName, Database. Ставлю свойство Connected=true; Пробую подключиться к БД. Выдается сообщение из блока try{} catch(...) "Ошибка подключения к базе данных!". Логин и пароль правильные. Имя локальной базы правильное. Библиотеку libmysqld.dll положил в папке икзешника, подключил правильно. Не понимаю что не так.


В папке приложения нужно создать 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; /*подключаемся к базе*/
- 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; /*подключаемся к базе*/
*****xamid *****
Заполнил аргументы EmbeddedArgs. Подключение есть и главное окно поисковой формы открылось но при открытии таблицы не показывает текст и какие то вопросительные знаки ???
>Выдается сообщение из блока try { } catch(...) "Ошибка подключения к базе данных!".
Если бы ты вместо этого все же показывал изначальный (!) текст исключения, всем было бы гораздо легче. Прятать его надо только в релизе по соображениям безопасности, а в дебаге это какой-то выстрел в ногу.
Если бы ты вместо этого все же показывал изначальный (!) текст исключения, всем было бы гораздо легче. Прятать его надо только в релизе по соображениям безопасности, а в дебаге это какой-то выстрел в ногу.
*****xamid *****
проект не маленький, 8 мб чисто текстовики, вы уверены, что разберетесь?
а сервер бд работает?
*****xamid *****
Сервер не нужен. БД локальная, работает через конектор libmysqld.dll
Похожие вопросы
- C++ WINAPI помогите пожалуйста разобраться с LNK1120 при подключении к mysql
- C++. Где тут есть ошибка?Нужно определенное количество раз выполнить поиск номера элемента в массиве по его значению.
- C++. Как найти 3 самых больших числа из ряда чисел введенных пользователем?
- Ошибка в динамическом массиве new[] и delete[] |С++ Builder
- Ошибки в коде c++
- Как решить ошибку C2079 использует не имеющую определения структуру class C++
- Синтаксическая ошибка класса. C++
- Помогите, пожалуйста, исправить ошибку в коде (C++).
- В чем ошибка простого кода C++?
- Нужен готовый код по C++ рабочий без ошибок C++