Содержание
Работа с 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);