Работа с MySQL из 1С через Adodb

Пример вызова хранимой процедуры

stored-procedure.txt
Сервер="10.0.0.1"; // IP адрес сайта
ПользовательСервера="devel"; // имя пользователя базы данных
ПарольСервера="test"; // пароль пользователя базы данных
БазаСервера="test_db"; // название SQL базы данных
 
Connection  =  Новый COMОбъект("ADODB.Connection");
 
ConnParam = "DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER="+СокрЛП(Сервер)+"; UID="+СокрЛП(ПользовательСервера)+"; PWD="+СокрЛП(ПарольСервера)+"; DB="+СокрЛП(БазаСервера)+";PORT=3306;";
 
Сообщить(ConnParam);
Try
    Connection.ConnectionTimeout = 300;
    Connection.Open(ConnParam);
    Сообщить("Соединение установлено");
 
    Command = Новый COMОбъект("ADODB.Command");
    Command.ActiveConnection = Connection;
 
    ТекстЗапроса = "SetField";
    Command.CommandType = 4; // 4 - хранимая процедура
    Command.CommandText = ТекстЗапроса;
 
    Param1 = Command.CreateParameter("_docid", 3, 1, 11, 2);
    Command.Parameters.Append(Param1);
    Param2 = Command.CreateParameter("_fieldName", 200, 1, 50, "test");
    Command.Parameters.Append(Param2);
    Param3 = Command.CreateParameter("_fieldDisplayName", 200, 1, 50, "test field name");
    Command.Parameters.Append(Param3);
    Param4 = Command.CreateParameter("_fieldType", 200, 1, 2, "s");
    Command.Parameters.Append(Param4);
    Param5 = Command.CreateParameter("_fieldValue", 200, 1, 50, "value");
    Command.Parameters.Append(Param5);
 
    Command.Execute();
 
 
Except
    ТекстСообщения = ""+ТекущаяДата()+" Connection error: "+ОписаниеОшибки();
    Сообщить(ТекстСообщения);
EndTry;

Синтаксис CreateParameter: (Name, Type, Direction, Size, Value).

Типы Type, подходящие для MySQL:

Описание Тип MySQL Тип Adodb Значение
Целое INT adInteger 3
Строка CHAR adInteger/adChar(?) 200/129
Строка VARCHAR adVarChar 200
Бинарные данные LONGBLOB adLongVarBinary 205

Пример вызова хранимой функции

stored-function.txt
// до этого должно быть подключение - см. пример выше
 
// так можно записать файл в MySQL
mstream = Новый COMОбъект("ADODB.Stream");
mstream.Type = 1;
mstream.Open();
mstream.LoadFromFile("C:\tmp\test.txt");
fileStream = Новый ComSafeArray(mstream.Read());
 
Command = Новый COMОбъект("ADODB.Command");
Command.CommandTimeout = 10;
Command.ActiveConnection = Connection;
Command.CommandText = "SELECT CreateDocument(?, ?, ?, ?, ?, ?, ?) AS new_id";
Command.CommandType = 1;
 
Param1 = Command.CreateParameter("_idedo", 3, 1, 11, "100500");
Command.Parameters.Append(Param1);
Param2 = Command.CreateParameter("_sigOne", 3, 1, 11, "1");
Command.Parameters.Append(Param2);
Param3 = Command.CreateParameter("_sigTwo", 3, 1, 11, "1");
Command.Parameters.Append(Param3);
Param4 = Command.CreateParameter("_keyOne", 200, 1, 50, "ЭОТ:Счет-спецификация:2015");
Command.Parameters.Append(Param4);
Param5 = Command.CreateParameter("_keyTwo", 200, 1, 50, "");
Command.Parameters.Append(Param5);
Param6 = Command.CreateParameter("_nameFile", 200, 1, 50, "test-doc.txt");
Command.Parameters.Append(Param6);
Param7 = Command.CreateParameter("_fileContent", 205, 1, fileStream.GetLength(), fileStream);
Command.Parameters.Append(Param7);
 
Recordset = Новый COMОбъект("ADODB.Recordset");
Recordset = Command.Execute();
 
Сообщить(Recordset.Fields("new_id").Value);

Ссылки

Печать/экспорт