Материал из for iRidium developers
Перейти к: навигация, поиск
Эта страница является переводом страницы DB API. Перевод выполнен на 100%.

Other languages:

API iRidium. Базы данных

Системная и пользовательские SQL базы данных хранят в iRidium Server информацию об изменении переменных Сервера во времени. На основе этой информации возможно произведение выборок, создание графиков и логов

Для создания запросов к базе ознакомьтесь с языком SQL.


Системная база данных

Доступна только для чтения. Заполняется данными из тегов серверного проекта, в параметрах которых настроено сохранение в базу.

IR.GetDatabase

Получите доступ к системной базе как к SQL объекту, чтобы читать из нее данные.

Конструктор SQL объекта. Создает SQL объект для работы с базой SQLite

Синтаксис

IR.GetDatabase();

на входе значение описание

-

на выходе
Object [object SQLPrototype] type: Object
объект - системная база данных


Пример

var systembase = IR.GetDatabase();
IR.Log(systembase) // [object SQLPrototype]

системная база доступна только для чтения


Пользовательская база данных

Доступна для чтения, записи, редактирования, удаления. Создайте свою собственную базу с помощью конструктора и заполняйте с помощью методов SQL объекта.

new SQL()

Конструктор SQL объекта для создания пользовательской базой данных SQLite

Синтаксис

new SQL();

на входе значение описание

-

на выходе
Object [object SQLPrototype] type: Object
объект - пользвательская база данных


Пример

var mybase = new SQL(); 
IR.Log(mybase) // [object SQLPrototype]

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


Объект RecordSet

Объект RecordSet - это выборка записей из базы данных SQL, которую мы получаем по запросу к базе:

var RecordSetObj = sqlobject.Request('SELECT <request>');

Например:

// получить все записи из таблицы Info, где поле Value < 100
var RecordSetObj = database.Request('SELECT * FROM Info WHERE Value<100');
IR.Log(RecordSetObj) // [object RecordSetPrototype]

Объект RecordSet обладает уникальными свойствами, к нему можно применить методы, специфичные для объекта RecordSet.


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

Для формирования пользовательской базы данных создайте SQL объект и запишите в переменную (назовем ее database). К объекту можно применить методы:


.Open

открыть файл базы данных

Синтаксис

sqlobject.Open(file)

на входе значение описание
sqlobject type: onbject
объект - пользовательская или системная база
file "MyBase.db" type: string
имя файла базы данных
на выходе

-


Пример

var mybase = new SQL();
IR.AddListener(IR.EVENT_START,0,function()
{
   mybase.Open('MyBase.db');
   mybase.Execute("BEGIN");
   mybase.Execute('CREATE TABLE Info(ID int, Value float, Name string)');
   mybase.Execute("COMMIT");  
   mybase.Close();
});

Если такого файла нет, он будет создан в папке документов проекта, например C:\Users\User\Documents\iRidium pro documents beta\Server\Documents\<Project Name>\MyBase.db


.Execute

выполнить действие с базой. Возможные действия описаны в языке SQL

Синтаксис

sqlobject.Execute(action)

на входе значение описание
sqlobject type: onbject
объект - пользовательская или системная база
action "BEGIN" type: string
действие с базой
на выходе

-


Пример

var mybase = new SQL();
IR.AddListener(IR.EVENT_START,0,function()
{
   mybase.Open('MyBase.db');
   mybase.Execute("BEGIN");
   mybase.Execute('CREATE TABLE Info(ID int, Value float, Name string)');
   mybase.Execute("COMMIT");  
   mybase.Close();
});

Чтобы запись в базу происходила быстро и корректно, необходимо использовать логические команды:

mybase.Execute("BEGIN");   // начать работу с базой
...
// действия с базой
...
mybase.Execute("COMMIT");  // закончить работу с базой




.Request

запрос к базе, позволяет указать условия выборки из базы. Правила формирования условий описаны в языке SQL

Синтаксис

sqlobject.Request(conditions)

на входе значение описание
sqlobject type: onbject
объект - пользовательская или системная база
conditions 'SELECT * FROM Info WHERE Value<100' type: string
тело запроса к базе
на выходе
RecordSet Object [object RecordSetPrototype] type: object
объект RecordSet, содержит результат запроса


Пример

var mybase = new SQL();
IR.AddListener(IR.EVENT_START,0,function()
{
      mybase.Open('MyBase.db');
      mybase.Execute("BEGIN");  
      mybase.Execute('CREATE TABLE Info(ID int, Value float, Name string)');
      mybase.Execute('INSERT INTO Info(ID, Value, Name) VALUES(1,19.9,"sunny day")'); 
      var RecordSetObj = mybase.Request('SELECT * FROM Info WHERE ID<30');  
      IR.Log(RecordSetObj.GetColumnName(0)+'\t'+RecordSetObj.GetColumnName(1)+'\t'+RecordSetObj.GetColumnName(2));
      mybase.Execute("COMMIT");
      mybase.Close();
});

в ответ на запрос получаем объект RecordSet, который содержит результат запроса


.Close

завершить работу с базой

Синтаксис

sqlobject.Close()

на входе значение описание
sqlobject type: object
объект - пользовательская или системная база
на выходе

-


Пример

var mybase = new SQL();
IR.AddListener(IR.EVENT_START,0,function()
{
      mybase.Open('MyBase.db');
      mybase.Close();
});

Перед завершением работы с базой сохраните изменения командой mybase.Execute("COMMIT")



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

RecordSet - это выборка записей из базы данных SQL, которую мы получаем по запросу к базе. К объекту RecordSet можно применить методы работы со строками и столбцами базы, можно запросить свойства объекта.


.GetColumnName

имя столбца (индекс столбца: 0...n)

Синтаксис

RecordSetObj.GetColumnName(index)

на входе значение описание
RecordSetObj type: object
объект RecordSet, содержит выборку, полученную по запросу из базы данных
index 0 type: number
индекс столбца, 0...n
на выходе
column name ID type: string
имя столбца


Пример

var mybase = new SQL();
IR.AddListener(IR.EVENT_START,0,function()
{
      mybase.Open('MyBase.db');
      mybase.Execute("BEGIN");
      mybase.Execute('CREATE TABLE Info(ID int, Value float, Name string)');
      mybase.Execute('INSERT INTO Info(ID, Value, Name) VALUES(1,19.9,"sunny day")'); 
      var RecordSetObj = mybase.Request('SELECT * FROM Info WHERE ID<30');     
      IR.Log(RecordSetObj.GetColumnName(0)+ '\t'+ RecordSetObj.GetColumnName(1)+ '\t'+ RecordSetObj.GetColumnName(2));
      mybase.Execute("COMMIT");
      mybase.Close();
});





.GetColumnType

тип столбца: int (1), float (2), string (3). Индекс столбца: 0...n

Синтаксис

RecordSetObj.GetColumnType(index)

на входе значение описание
RecordSetObj type: object
объект RecordSet, содержит выборку, полученную по запросу из базы данных
index 0 type: number
индекс столбца, 0...n
на выходе
type 1 type: number
тип данных:
  • 1 - int
  • 2 - float
  • 3 - string


Пример

var mybase = new SQL();
IR.AddListener(IR.EVENT_START,0,function()
{
      mybase.Open('MyBase.db');
      mybase.Execute("BEGIN");
      mybase.Execute('CREATE TABLE Info(ID int, Value float, Name string)');
      mybase.Execute('INSERT INTO Info(ID, Value, Name) VALUES(1,19.9,"sunny day")'); 
      var RecordSetObj = mybase.Request('SELECT * FROM Info WHERE ID<30');  
      IR.Log(RecordSetObj.GetColumnType(0)+ '\t'+ RecordSetObj.GetColumnType(1)+ '\t'+ RecordSetObj.GetColumnType(2));
      mybase.Execute("COMMIT");
      mybase.Close();
});





.GetColumnIndex

число строк в столбце (индекс столбца: 0...n)
функция не работает

Синтаксис

RecordSetObj.GetColumnIndex(index)

на входе значение описание
RecordSetObj type: object
объект RecordSet, содержит выборку, полученную по запросу из базы данных
index 0 type: number
индекс столбца, 0...n
на выходе
rows 1 type: number
количество строк в столбце


Пример

var mybase = new SQL();
IR.AddListener(IR.EVENT_START,0,function()
{
      mybase.Open('MyBase.db');
      mybase.Execute("BEGIN");
      mybase.Execute('CREATE TABLE Info(ID int, Value float, Name string)');
      mybase.Execute('INSERT INTO Info(ID, Value, Name) VALUES(1,19.9,"sunny day")'); 
      var RecordSetObj = mybase.Request('SELECT * FROM Info WHERE ID<30');  
      IR.Log(RecordSetObj.GetColumnIndex(0)+ '\t'+ RecordSetObj.GetColumnIndex(1)+ '\t'+ RecordSetObj.GetColumnIndex(2));
      mybase.Execute("COMMIT");
      mybase.Close();
});





.GetRowValue

значение в ячейке таблицы, выбранное по индексу столбца и строки (индексы: 0...n)

Синтаксис

RecordSetObj.GetRowValue(column, row)

на входе значение описание
RecordSetObj type: object
объект RecordSet, содержит выборку, полученную по запросу из базы данных
column 0 type: number
индекс столбца, 0...n
row 0 type: number
индекс строки, 0...n
на выходе
data 1 type: number, string
значение в ячейке


Пример

var mybase = new SQL();
IR.AddListener(IR.EVENT_START,0,function()
{
      mybase.Open('MyBase.db');
      mybase.Execute("BEGIN"); 
      mybase.Execute('CREATE TABLE Info(ID int, Value float, Name string)');
      mybase.Execute('INSERT INTO Info(ID, Value, Name) VALUES(1,19.9,"sunny day")'); 
      var RecordSetObj = mybase.Request('SELECT * FROM Info WHERE ID<30');  
      IR.Log(RecordSetObj.GetRowValue(0,0)+ '\t'+ RecordSetObj.GetRowValue(1,0)+ '\t'+ RecordSetObj.GetRowValue(2,0));
      mybase.Execute("COMMIT");
      mybase.Close();
});





Свойства объектов

RecordSet

RecordSetObj.property

Rows 4 type: Number
число строк в таблице
Columns 12 type: Number
число столбцов в таблице