Logo Logo ru
  • iRidi Pro
    Основные компоненты
    • Приложение i3 Pro
    • iRidi Pro Server
    • iRidi Studio
    • iRidium studio v. 1.3.8 (устаревшая версия)
    Java Script в iRidi
    • Руководство
    • Справочник
    • Примеры
    • JS драйвера
    другие
    • Личный Кабинет
    • iRidium Cloud
    • iRidium Transfer
    • Push-уведомления
    • Лучшая практика
    Лицензирование
    • Лицензирование и передача проекта
    • Оффлайн-лицензирование
    • Активация iRidi Pro Server
  • Продукты
    i3 lite
    • Приложение i3 lite
    • Регистрация и лицензирование
    • Сервер
    • Модули
    KNX Home Server
    • Приложение i3 KNX
    • KNX Home Server
    BUS77 HOME SERVER
    • Приложения Bus77 Home и Bus77 Lite
    • Bus77 Home Server
    Решения
    • BYOD - решение для гостиниц
    • Портал жителя - решение для МКД
    iRidi SCADA
    • iRidi SCADA
  • Bus77
    НАСТРОЙКА BUS77
    • Основы Bus77
    • Приложения Bus77 Home и Bus77 Lite
    • Работа с драйвером Bus77 в iRidi Studio
    • Настройка шины Bus77 в iRidi Studio
    ПРОТОКОЛ BUS77
    • Характеристики CAN (Bus77)
    • Описание протокола
    • Исходники на GitHub
    ОБОРУДОВАНИЕ BUS77
    • Каталог Bus77 Pro
    • Каталог Bus77 Lite
  • Поддерживаемое оборудование
    Драйверы
    • Список драйверов
    • ProAV драйвера
    • AV & Custom Systems
    • JS драйвера
    • Сторонние драйвера и фриланс
    Протоколы и интерфейсы
    • Голосовое управление
    • 1-Wire
    • BACnet IP
    • Bus77
    • KNX
    • KNX IP BAOS
    • Weinzierl kBerry
    • Microsoft Exchange
    • Modbus
    • MQTT
    • NFC
    • ODBC
    • Onvif
    • SIP
    • SNMP
    • Wake On Lan
    • Z-Wave
    • ZigBee
    Производители
    • AMX
    • AVCiT
    • Beckhoff ADS
    • Biamp Tesira
    • Bluesound
    • Casambi
    • BSS Harman
    • Clipsal
    • ControlArt 7Port
    • Crestron
    • DigiBird
    • Domintell
    • Duotecno
    • EIDE
    • EPSNET
    • Global Cache
    • HDL Buspro
    • Helvar
    • IEAST
    • INELS BUS
    • INELS Wireless
    • Intesis
    • Kleger
    • Kramer VIA
    • Kramer 3000
    • Larnitech
    • Legrand Netatmo
    • LG TV
    • Lutron
    • Lutron Homeworks QS
    • MyHome
    • Nest
    • Novastar
    • Panasоnic PTZ
    • Philips Dynalite
    • PJLink
    • Satel
    • SamsungTV
    • Sonos
    • Somfy
    • SpinetiX
    • Televic Conference
    • TIS
    • Tion
    • URRI
    • Velbus
    • Velocio
    • Vinteo
    • WyreStorm
    • WiiM
    • Xicato
    • Yamaha
    • ZONT
    • Z-Wave.me
    Протестированное оборудование
    • Панель HDL S57
    • Панель HDL S10
    • SIP-домофон
    • Akuvox
    • Arlight
    • Divus
    • QBic TD-1050 PRO
    • QBic TD-1060 Slim
    • QBic TD-1070
    • Sigur
    • Uni-Ubi
    • Velocio
  • Оборудование iRidi

    Серверы
    • HS Сервер
    • ProAV Control Processor Basic
    • ProAV Control Processor Advanced
    • Спецификация контроллеров UMC
    • Настройка контроллера UMC C2
    • Настройка контроллера UMC C3
    • Настройка контроллера HDL IntelliCenter 2 (UMC C4)
    Модули расширения
    • I-PX-RS1
    • I-PX-RS4
    • I-PX-IR3
    KNX
    • KNX Home Server
    • KNX IP Interface
    Панели управления
    • iRidium Panel 7
    • Touch Panel P3
    • Touch Panel P6
    • Touch Panel P8
    • Touch Panel P10
    • Tabletop Touch Panel 10
    • AV Remote Control
    ОБОРУДОВАНИЕ BUS77
    • Каталог Bus77 Pro
    • Каталог Bus77 Lite
    • Differences
Сайт iRidium mobile
Содержание
    Инструменты‌
    • Сведения о странице
    • Постоянная ссылка
    • Версия для печати
    • Спецстраницы
    • Связанные правки
    • Ссылки сюда
    Login / Create Account
    Материал из for iRidium developers
    Перейти к: навигация, поиск
    Эта страница является переводом страницы ODBC. Перевод выполнен на 100%.

    Other languages:
    English • ‎русский
  • Справочник
  • ODBC
  • Содержание

    • 1 Работа с базами данных через ODBC
    • 2 Пример. Запись в базу данных
    • 3 Пример. Чтение из базы данных
    • 4 Объект ODBC
      • 4.1 new ODBC()
    • 5 Методы объекта ODBC
      • 5.1 .Query()

    Работа с базами данных через ODBC

    методы для работы с ODBC

    iRidium server предоставляет функционал, управляемый через скрипт и позволяющий через ODBC (Open Database Connectivity) получить локальный или удалённый доступ к различным базам данных, таким как: MySQL, PostgreSQL, SQLite, Oracle, SQL Server, Microsoft Access, dBase, Paradox, FoxPro и т.д.

    ODBC - платный функционал в iRidium server, но Вы можете попробовать его в тестовом режиме. Доступен в iRidium pro 1.2.10 и выше.

    ODBC-драйвер работает только в iRidium server, работающим под управлением ОС Windows (x86/x64). Функционал для ODBC и поддержка некоторых СУБД (SQL Server, Microsoft Access, dBase, Paradox, FoxPro) по умолчанию включены в стандартный пакет установки ОС Windows.

    Для работы с другими базами данных необходимо скачать ПО для ODBC-соединения с ОС Windows от производителя соответствующей СУБД. Например, для работы с MySQL необходимо скачать приложение Connector/ODBC для Windows: https://dev.mysql.com/downloads/connector/odbc/ (Разрядность ПО для ODBC-соединения должна совпадать с разрядностью iRidium server.)

    1 Найдите в Windows и запустите приложение ODBC Data Sources (32-bit или 64-bit).

    ODBC administrator.png

    2 Добавьте новое соединение с базой данных и настройте его.

    ODBC config(1).png

    В целях безопасности поля User и Password не рекомендуется задавать в приложении ODBC Data Sources, так как они там не зашифрованы. Эти данные передаст iRidium server при подключении к базе данных.

    3 Напишите скрипт, в котором будет создаваться объект ODBC и производиться запрос к базе данных с использованием метода .Query().

    Для того, чтобы на сервере корректно активировалась лицензия, необходимо подключаться к ODBC в скриптах не по событию EVENT_START, а с небольшой задержкой, например, с использованием функции IR.SetTimeout() или от нажатия кнопки.


    Пример. Запись в базу данных

    Данный скрипт получает данные о потреблении электроэнергии и температуре в двух точках со счётчика энергии и датчиков температуры по протоколу Modbus TCP и записывает измеренные значения в локальную базу данных SQLite через механизм ODBC.

    Таким же образом могут записаны данные в любую локальную или удалённую базу данных SQL.

    var SQLite = false;
    var query_head = "INSERT INTO measure(datetime, consumption, temperature1, temperature2) VALUES(";
    var cdt = 0;
    var cons = 0;
    var temp1 = 0;
    var temp2 = 0;
     
    IR.AddListener(IR.EVENT_START,0,function()
    {
       IR.SetInterval(1000, getData);
    });
     
    function getData()
    {
       if (!SQLite)  //if no ODBC object
       {
          SQLite = new ODBC("", "", "sqlite3"); // creating ODBC object
          if (SQLite)
          {
             IR.Log(SQLite + " connected!");
          }
       }
       else
       {    
          var currentdatetime = new iDate();             
          cdt = currentdatetime.value;
          // current date and time in OLE Automation date format (OADate)
          cons = IR.GetDevice("Modbus TCP").GetFeedback("Channel 1");
          temp1 = IR.GetDevice("Modbus TCP").GetFeedback("Channel 2");
          temp2 = IR.GetDevice("Modbus TCP").GetFeedback("Channel 3");
          var query = query_head + cdt + "," + cons + "," + temp1 + "," + temp2 + ");";
                             /*(datetime, consumption, temperature1, temperature2)*/      
          var response = SQLite.Query(query); // SQL query to SQLite database
          IR.Log(query);   
       }
    }

    Пример. Чтение из базы данных

    В этом примере производится запрос к базе данных MySQL, полученный ответ распаковывается в массив, затем отображается первый элемент поля "User".

    При запросах чтения из базы данных SQL необходимо учитывать ограничения размера памяти и производительности процессора.

    IR.AddListener(IR.EVENT_START,0,function()
    {
        IR.SetTimeout(50, getData);
        // waiting 50 milliseconds for appropriate iRidium ODBC driver license activation
    });
    function getData()
    {
       var MySQL = new ODBC("root", "", "MySQLresurs"); // creating database connection object
       var response = MySQL.Query("SELECT * FROM users"); // SQL query to MySQL database
       if (response)          // if connection is successful and answer exists
       {
           var rows = response.GetRows();
           var columns = response.GetColumns();
           var data = {};               // two-dimension array with query result
           for (var i = 0; i < columns; i++) {
               var colName = response.GetColumnName(i);
               data[colName] = [];
               for (var j = 0; j < rows; j++) {
                   data[colName][j] = response.GetRowValue(i, j);
               }
           }
        response.Free(); // free memory of recordset (optional action for memory optimization)
        IR.Log(data["User"][0]);   // first user in MySQL table
        }
    }


    Объект ODBC


    new ODBC()

    Создаёт объект ODBC, который соединяется с базой данных и содержит единственный метод Query().

    Синтаксис

    new ODBC(login, password, dsn);

    на входе значение описание
    login 'myname' type: string
    Логин (имя пользователя) для подключения к базе данных
    password 'qwerty' type: string
    Пароль для подключения базе данных (может быть пустой для локальной базы данных)
    dsn 'MySQLresurs' type: string
    Имя источника данных ODBC (DSN)
    на выходе
    object [object DevicePrototype] type: object
    ODBC-соединение


    Пример

    var MySQL = new ODBC("root", "", "MySQLresurs");
    IR.Log(MySQL); // [object DevicePrototype]

    чтобы обратиться к объекту, запишите его в переменную


    Методы объекта ODBC


    .Query()

    Делает запрос к базе данных и возвращает ответ в виде выборки RecordSet.

    Выборки SQL-запросов могут иметь большие объёмы. При работе с большими выборками разработчик должен учитывать ограничения в виде размера оперативной памяти, быстродействия процессора, коммуникационных контроллеров, пропускной способности сетевых интерфейсов своей системы. Рекомендуется программно ограничивать размер выборок.

    Синтаксис

    ODBCobj.Query(query);

    на входе значение описание
    ODBCobj [object DevicePrototype] type: object
    Объект подключения к ODBC
    query 'SELECT * FROM orders' type: string
    Строка запроса
    на выходе
    RecordSetObj [ ] type: object
    Объект выборки RecordSet. Если запрос ответа не предполагает, то будет возвращено значение false.


    Пример

    var response = DB.Query("SELECT * FROM users");




    Источник — «https://dev.iridi.com/index.php?title=ODBC/ru&oldid=66045»
    О нас
    Компания
    Команда
    История
    Философия
    Награды
    Партнерство
    Наши партнеры
    Партнерские программы
    Подать заявку на партнерство
    Продукты
    iRidium pro
    iRidium lite
    iRidium gate
    iRidium server
    Загрузки
    iRidium pro
    iRidium lite
    Другие версии
    Маркетинговые материалы
    Поддержка
    Онлайн курсы/Видео
    Рекомендуемое оборудование
    Другие версии
    iRidium pro
    Документация
    FAQ
    Форум
    iRidium lite
    Документация
    Форум
    Проекты
    Типовые проекты
    Умные здания
    Умные дома
    Специальные решения
    Найти дилера
    Новости
    Youtube
    Twitter
    VK
    Logo
    contact@iridi.com
    +7 (499) 322-73-29

    Политика конфиденциальности