Те кто пробовал писать прямые запросы к MySQL из под 1С нередко сталкивались, с тем что код написанный под конкретный драйвер, отказывается работать на другом. При этом приходилось либо заменять драйвер либо устанавливать сразу два. Я постарался детально разобраться с данной проблемой и вот что у меня вышло:Пример кода который работает на версии 3.51:
Соединение = CreateObject("ADODB.Connection"); Соединение_param = "driver={MySQL ODBC 3.51 Driver};server="+Сервер+";uid="+Имя+";pwd="+Пароль+";database="+База+";port=3306;STMT=SET CHARACTER SET cp1251"; Try Соединение.open(Соединение_param); Запрос = "SELECT `Поле1`,`Поле2` FROM `ИмяТаблицы`"; Результат = Соединение.Execute(Запрос); Except DoMessageBox("Отсутствует связь с базой!"); return; EndTry;
как видите для минимального запроса необходимо создать строку с параметрами подключения, открыть соединение методом «open» и передать запрос методом «execute»
Теперь перейдем к версии 5.1
вот код который нормально работает на ней:
Соединение = CreateObject("ADODB.Connection"); Соединение_param = "Driver={MySQL ODBC 5.1 Driver};server="+Сервер+";user="+ИмяСервера+";Password="+ПарольСервера+";Database="+БазаСервера+";port=3306;Option=3"; Cmd = СоздатьОбъект("ADODB.Command"); Try Cmd.ActiveConnection = Соединение; Cmd.CommandText = "TRUNCATE TABLE `имяТаблицы`;"; Cmd.Execute(); Except DoMessageBox("Отсутствует связь с базой!"); return; EndTry;
Отличие которое бросается в глаза это появление нового объекта ADODB.Command с помощью которого серверу передается запрос.
По другому не работает… 🙂
mysql-connector-odbc-3.51.25-win32.msi
mysql-connector-odbc-5.00.11-beta-gpl-win32.msi
Для тех у кого вообще ничего не работает возможно у вас не установлен дряйвер?