Связка ADO и MySQL

ADO это очень удобная технология. Настраиваешь udl драйвер, цепляешься и вперед. И если у вас MS SQL сервер БД, то дальше можете не читать. Всё цепляется безо всяких проблем. А мне надо было зацепить MySQL. Тоже ничего сложного, но шагов чуть по больше.

Для начала - C++ Builder 6 имеет специальный компонент для работы с MySQL - dbExpress, но я не разобрался в нем. Всё уперлось в Vendor, который работает посредством libmysql.dll. Но какие я ему библиотеки не подсовывал, подключатся к четвертой версии MySQL он не хотел. Проверил на пятой - та же беда.

Теперь о том, что есть необходимо. Идём на http://dev.mysql.com/downloads/, берем коннектор MySQL Connector/ODBC 3.51. Я не знаю почему, но коннектор пятой версии не так работает.

Устанавливаем и получаем драйвер доступа до MySQL. Идем в Панель управления(Control Panel) -> Администрирование(Administrative tools) -> Источники данных ODBC(Data Sources). Открываем вкладку System DSN и жмем Add(Добавить). Там выбираем наш устанновленный коннектор и жмем ОК.

Если добрались до этого пункта, то дальше все значительно проще. В коннекторе указываем параметры подключения, т.е. название вашего подключения(DSN) - оно выбирается произвольно, хост с БД, порт(по умолчанию 3306), логин/пароль для доступа к серверу БД и, конечно, саму базу. Делаем Test connection и в случае успешного подключения жмем ОК и запускаем C++ Builder.

Теперь есть два способа законнектится к базе. Либо создаем файл с расширением udl. Достаточно простого txt, просто переименовать. Либо прописываем ConnectionString. С первым все просто, жмете на udl файле два раза, открывается окно работы с провайдерами. Там выбираем Microsoft OLE DB for ODBC и жмем Next. В списке первого пункта выбираем имя недавно созданного DSN, далее вводим логин/пароль и жмем test connection. Если все удачно, выносим компоненту ADOConnection. В инспекторе объектов, находим ConnectionString и жмем на троеточие. Далее выбираем Use Data Link File, Browse(Обзор), находим вами созданный udl и жмем ОК. Теперь в ADOConnection выбираем булево свойство Connected и ставим true. Если все хорошо, то попросят залогинится в базу, при компиляции программы. Всё, база подцеплена, работать дальше как обычно.

Лично я не люблю когда на форме много компонент, поэтому я создаю ADOConnection динамически. Выглядит это так:

AnsiString user="KerryT";
AnsiString pass="666";
Test_conn = new TADOConnection(NULL); //Создаем новый ADOConnection
Test_conn->LoginPrompt=false; //Убираем, чтоб нас сразу не просило логинится
Test_conn->ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;User ID="+(AnsiString)usеr+"; Password = "+(AnsiString)pass+"; Data Source=myodbc"; //Используем строку соединения в которой указываем, провайдера, логин/пароль и имя DSN
try //Ловим ошибки если например неправильный ввод логина/пароля
{Test_conn->Connected=true;}
catch(...) //ловим любую ошибку
{ShowMessage("Такого пользователя не существует, проверьте правильность ввода");}

Незабываем, что если используем переменные в строке, то обязательно в AnsiString переводим.Вместо заключения - не забывайте проверять кодировки базы. Насколько я уловил C++ Builder 6 работает с latin1.




Ссылки:

К содержанию

© Copyright 2004-2017 - CMS Made Simple
Сайт работает на CMS Made Simple version 1.4.1

© Все печеньки Break-people.ru принадлежат авторам проекта.

Яндекс цитирования Рейтинг@Mail.ru Яндекс.Метрика