Различия между MySQL ODBC 3.51 Driver и MySQL ODBC 5.1 Driver

Опубликовано Опубликовано в рубрике 1C Программирование

Те кто пробовал писать прямые запросы к 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

Для тех у кого вообще ничего не работает возможно у вас не установлен дряйвер?