Logo Logo en
  • Сервер
    Сервер
    • Основы
    Железо
    • iRidium server NUC
    • iRidium server UMC
    • iRidium server RPi
    • iRidium server for Linux
    iRidium studio
    • Первое знакомство
    • Создание серверного проекта
    • Работа с драйверами
    Отладка приложения
    • Запуск проекта на сервере
    • Веб-интерфейс
    Other
    • Интеграция панелей
    • Интеграция серверов
  • i3 pro
    i3 pro
    • Основы
    iRidium studio
    • Первое знакомство
    • Создание графического интерфейса
    • Работа с драйверами
    Отладка приложения
    • Эмулятор
    • iRidium Transfer
    • Логирование
    Конечный пользователь
    • Лицензирование
    • Установка и настройка приложения
    • Системное меню
    Other
    • Использование модулей i3 lite
    • Tips&Tricks
    JavaScript
    • Руководство
    • Справочник
    • Примеры
    • Готовые JS модули
  • Драйверы
    Драйверы
    • Основы
    Протоколы и интерфейсы
    • BACnet IP
    • KNX
    • KNX IP BAOS
    • Microsoft Exchange
    • Modbus
    • MQTT
    • ODBC
    • SIP
    • Yandex Alice
     
    • 1-Wire
    • Amazon Alexa
    • Z-Wave
    • Google Home
    • ZigBee
    Производители
    • AMX
    • Beckhoff ADS
    • Clipsal
    • Crestron
    • Domintell
    • Duotecno
    • INELS BUS
    • INELS Wireless
    • EPSNET
     
    • Global Cache
    • HDL Buspro
    • Helvar
    • Larnitech
    • Lutron
    Разработчикам
    • AV & Custom Systems
    • Готовые JS модули

  • Bus77





    • Преобразователь USB/Bus77
  • i3 lite


    i3 lite
    • Основы
    Конфигуратор i3 lite
    • Создание проекта i3 lite
    • iRidium server lite
    • Подготовка проекта для конечного пользователя
    • Object management through the internet
    • iRidium cloud gate
    • iRidium Server for Raspberry Pi
    Модули
    • Все модули
    • HDL bus-pro
    • KNX
    • Modbus TCP
    • iRidium Gate for Voice Control
    Разработка модулей
    • Основы
    • Справочник API
    • Smart API
    • Тестирование и публикация модулей
  • Сервисы




    • iRidium Cloud

    • Push-уведомления
    • Внешние push-уведомления

    • BYOD
iRidium mobile web-site
Содержание
    Инструменты‌
    • Сведения о странице
    • Постоянная ссылка
    • Версия для печати
    • Спецстраницы
    • Связанные правки
    • Ссылки сюда
    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»
    About us
    Company
    Team
    History
    Philosophy
    Rewards
    Partnership
    Our partner
    Partnership Programs
    Apply for partnership
    products
    iRidium pro
    iRidium lite
    iRidium gate
    iRidium server
    Loads
    iRidium pro
    iRidium lite
    Other version
    Marketing materials
    Support
    On-line courses/Video
    Recommended equipment
    Other version
    iRidium pro
    Documentation
    FAQ
    Forum
    iRidium lite
    Documentation
    Forum
    Projects
    Standart projects
    Smart buildings
    Smart house
    Special solution
    Find a dealer
    News
    Facebook
    Youtube
    Twitter
    VK
    Logo
    Everything is under control


    Russia, Nizhny Tagil
    Mira Sstreet, 56 B
    +7 (343) 271-47-13 (2)

    Privacy policy
    2008-2018 iRidium LTD