Вход

Просмотр полной версии : Передача запроса в БД MySQL



alekstani
17.11.2022, 12:48
Добрый день!

Подскажите, пожалуйста, как передать данные в запросе с типом WSTRING?
Данные необходимо записать в таблицу БД MySQL с ПЛК СПК-110.
Имеются ли какие-либо библиотеки?

Евгений Кислов
17.11.2022, 12:50
Добрый день!

Подскажите, пожалуйста, как передать данные в запросе с типом WSTRING?
Данные необходимо записать в таблицу БД MySQL.
Имеются ли какие-либо библиотеки?

Добрый день.
Какой контроллер вы используете?

Евгений Кислов
17.11.2022, 13:03
Вижу, что обновили пост и указали, что у вас СПК110.
Тогда см. пример (для прошивки 2.4.xxxx.xxxx) и видео:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/11_Other/Example_SqlFeatures_3517v1.projectarchive
https://youtu.be/L9e30ztABHQ

alekstani
17.11.2022, 13:49
Спасибо за полезный ответ.

alekstani
18.11.2022, 13:37
Добрый день!
Пока не удалось передать данные в БД типа WSTRING. Настройки конфиг.файла сделал в соответствии с ip и номером порта сервера БД MySQL. Тип данных поля в БД VARCHAR с поддержкой utf-8. Причем, если удаляю только это поле, то
данные спокойно пишутся в базу. Подскажите, пожалуйста, на что обратить внимание.639346393563936

Евгений Кислов
18.11.2022, 13:48
Конфиг-файл вам не нужен - он используется только для MsSQL (я вчера приложил ссылку не на то видео - сейчас отредактировал свой вчерашний пост).
Попробуйте другие charset/collation в СУБД задать - начните с Win1251.

И лучше начните с запуска исходного примера - на вашем скриншоте видно, что вы вызываете блок внутри цикла FOR - это плохая идея (цикл выполняется синхронно, а блок работает асинхронно).

alekstani
22.11.2022, 12:09
Добрый день!
Подскажите, пожалуйста, как работает fbMySQL_Client из примера. Интересует поведение, если в ПО используется несколько таких блоков. Возможна ли потяря данных при этом или они встают в очередь и данные не теряются? Если возможна потеря данных как организовать передачу правильно? В настоящий момент я передаю данные последовательно, т.е. когда на выходе одного блока done, то начинает работать другой блок. Однако, такой подход сильно увеличивает общее время передачи. Цепочка из 5 таких блоков занимает в среднем около 8 секунд. Еще в качестве запроса используется строка. Нельзя ли увеличить объем передаваемых за раз данных, используя массив байт?

Евгений Кислов
22.11.2022, 12:19
Добрый день!

Добрый день.


Интересует поведение, если в ПО используется несколько таких блоков.

В цикле задачи можно вызвать до 9 экземпляров блока.


Возможна ли потеря данных при этом или они встают в очередь и данные не теряются?

Если в цикле вызывается несколько экземпляров блока - то они выполняются параллельно, в различных потоках.
Т.е. с точки зрения СУБД - это несколько разных клиентов.


как организовать передачу правильно?

Зависит от особенностей решаемой задачи и критериев "правильности".