- Справочник
- Базы данных
API iRidium. Базы данных
Системная и пользовательские SQL базы данных хранят в iRidium Server информацию об изменении переменных Сервера во времени. На основе этой информации возможно произведение выборок, создание графиков и логов
Версия SQLite: 3.8.7
Для создания запросов к базе ознакомьтесь с языком 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]
Примечания
- чтобы обратиться к объекту, запишите его в переменную
Методы SQL объекта
Для формирования пользовательской базы данных создайте SQL объект и запишите в переменную (назовем ее database). К объекту можно применить методы:
.Open()
открыть (создать) файл базы данных
Синтаксис
sqlobject.Open(file, undeleted);
| на входе | значение | описание |
|---|---|---|
| sqlobject | type: object объект - пользовательская или системная база | |
| undeleted | true | type: boolean тип папки: false - удаляемая папка ...\iRidium pro documents\Server\Documents<br />true - неудаляемая папка ...\iRidium pro documents\Server\Database\UserDB\ |
| file | "MyBase.db" | type: string имя файла базы данных |
| на выходе | ||
|---|---|---|
| - |
Пример
var mybase = new SQL();
IR.AddListener(IR.EVENT_START,0,function()
{
mybase.Open('MyBase.db', true);
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\Server\Documents\MyBase.db
или
C:\Users\User\Documents\iRidium pro documents\Server\Database\UserDB\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 REAL, Name TEXT)');
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 тело запроса к базе |
| на выходе | ||
|---|---|---|
| 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 REAL, Name TEXT)');
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, которую мы получаем по запросу к базе:
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.
Методы объекта RecordSet
RecordSet - это выборка записей из базы данных SQL, которую мы получаем по запросу к базе. К объекту RecordSet можно применить методы работы со строками и столбцами базы, можно запросить свойства объекта.
.GetRows()
возвращает число строк в выборке RecordSet
Синтаксис
RecordSetObj.GetRows();
| на входе | значение | описание |
|---|---|---|
| RecordSetObj | type: object объект RecordSet, содержит выборку, полученную по запросу из базы данных |
| на выходе | ||
|---|---|---|
| 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 REAL, Name TEXT)');
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.GetRows());
mybase.Execute("COMMIT");
mybase.Close();
});
.GetColumns()
возвращает число столбцов в выборке RecordSet
Синтаксис
RecordSetObj.GetColumns();
| на входе | значение | описание |
|---|---|---|
| RecordSetObj | type: object объект RecordSet, содержит выборку, полученную по запросу из базы данных |
| на выходе | ||
|---|---|---|
| columns | 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 REAL, Name TEXT)');
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.GetColumns());
mybase.Execute("COMMIT");
mybase.Close();
});
.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 REAL, Name TEXT)');
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();
});
.GetColumnIndex()
выдаёт индекс столбца по его имени
Синтаксис
RecordSetObj.GetColumnIndex(name);
| на входе | значение | описание |
|---|---|---|
| RecordSetObj | type: object объект RecordSet, содержит выборку, полученную по запросу из базы данных | |
| name | 'id' | type: string имя столбца |
| на выходе | ||
|---|---|---|
| index | 0 | type: number индекс столбца (нумерация столбцов начинается с 0) |
Пример
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 REAL, Name TEXT)');
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('Value')); // 1
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 REAL, Name TEXT)');
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();
});
.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 REAL, Name TEXT)');
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();
});
.Free()
освобождает память от выборки RecordSet. Используется для оптимизации использования памяти.
Синтаксис
RecordSetObj.Free();
| на входе | значение | описание |
|---|---|---|
| RecordSetObj | 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 REAL, Name TEXT)');
mybase.Execute('INSERT INTO Info(ID, Value, Name) VALUES(1,19.9,"sunny day")');
var RecordSetObj = mybase.Request('SELECT * FROM Info WHERE ID<30');
mybase.Execute("COMMIT");
mybase.Close();
RecordSetObj.Free();
});
Свойства объекта RecordSet
RecordSetObj.property
| свойство | значение | описание |
|---|---|---|
| Rows | 4 | type: Number число строк в таблице |
| Columns | 12 | type: Number число столбцов в таблице |