Welcome, Guest
Username: Password: Remember me
Welcome to TeslaSCADA forum!

Tell us and our members about your experience of using our products.
  • Page:
  • 1
  • 2

TOPIC: Обмен с внешней системой через БД SQLite

Обмен с внешней системой через БД SQLite 2 years 2 months ago #1815

  • Zakhar
  • Zakhar's Avatar
  • Offline
  • New Member
  • Posts: 5
  • Karma: 0
Добрый день
Можете посоветовать как лучше сделать и какую БД выбрать для этой цели
Внешний клиент будет записать задание в БД а система будет читать и записывать результат, а клиент читать этот результат
Интенсивность такого обмена будет относительно редкая, возможно раз в час это самое частое
Напрашивается БД рецептов для этого, чтобы без дополнительных скриптов читать/писать со стороны системы, или я ошибаюсь?
Или лучше создать файл БД SQLite скриптом и его использовать для этой цели?
Тогда где можно посмотреть примеры таких скриптов. SQL запросы писать могу, но тут еще нужно дополнительные строчки и с синтаксисом могу напутать
The administrator has disabled public write access.

Обмен с внешней системой через БД SQLite 2 years 2 months ago #1816

  • fatkhrus
  • fatkhrus's Avatar
  • Offline
  • Administrator
  • Posts: 826
  • Thank you received: 123
  • Karma: -107
Добрый день,

Без скриптов не обойдется. Лучше создать свою собственную таблицу в БД для этих целей. Пример вы можете посмотреть в видео: . Скачать проект из видео можно ниже в описании к видео.

С уважением,
Руслан.
The administrator has disabled public write access.

Обмен с внешней системой через БД SQLite 2 years 2 months ago #1817

  • Zakhar
  • Zakhar's Avatar
  • Offline
  • New Member
  • Posts: 5
  • Karma: 0
Еще есть одна непонятка
Если внешний клиент займет файл при записи в него, как мне проверит не занят ли он, со стороны нашей системы, ну или при неудачной попытке обращения к файлу сделать повторную попытку
Т.е. как обработать такое событие?
The administrator has disabled public write access.

Обмен с внешней системой через БД SQLite 2 years 2 months ago #1818

  • fatkhrus
  • fatkhrus's Avatar
  • Offline
  • Administrator
  • Posts: 826
  • Thank you received: 123
  • Karma: -107
Для SQLlite нельзя проверить занята данная БД или нет. Можно конечно придумать какой-нибудь "кривой" метод по поимке исключения. Но это не очень надежно, при этом нельзя со 100% гарантией сделать так чтобы эта ошибка была по причине занятой БД сторонним приложением. Я рекомендую лучше использовать другую БД в этом случае. Они позволят одновременно обращаться к БД.

С уважением,
Руслан
The administrator has disabled public write access.

Обмен с внешней системой через БД SQLite 2 years 2 months ago #1819

  • Zakhar
  • Zakhar's Avatar
  • Offline
  • New Member
  • Posts: 5
  • Karma: 0
Да, не хотелось заморачиваться с другими БД, для этой задачи это самый подходящий простой вариант
Тогда у меня другая идея, сделать два файла, в один записывает система и читает внешний клиент, а во второй пишет внешний клиент и читает система
В этом случае же не должно быть ситуации когда файл будет занят одним при попытке записи со стороны другого?
Если в файл происходит запись то прочитать же его можно? И при чтении файла возможна же запись? Или я ошибаюсь?
The administrator has disabled public write access.

Обмен с внешней системой через БД SQLite 2 years 2 months ago #1821

  • fatkhrus
  • fatkhrus's Avatar
  • Offline
  • Administrator
  • Posts: 826
  • Thank you received: 123
  • Karma: -107
Нет, в SQLlite если файл занят одним клиентом, то другой ничего сделать не может. Если не хотите работать с другими БД то просто создайте алгоритм с периодическим опросом БД. При занятой БД она не сможет считать данные, считает данные в следующем цикле.

С уважением,
Руслан
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Go to top