База данных: различия между версиями
Внешний вид
Sidminik (обсуждение | вклад) |
Sidminik (обсуждение | вклад) |
||
| (не показано 7 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
==Общая информация== | |||
Для взаимодействия с базой данных используется встроенный модуль db. | Для взаимодействия с базой данных используется встроенный модуль db. | ||
< | <syntaxhighlight lang="javascript"> | ||
const db = require('@chemsoft/legacy-db'); | |||
</syntaxhighlight> | |||
Модуль работает через провайдера <code>ODBC</code> с СУБД MS Access, MS SQL Server. | Модуль работает через провайдера <code>ODBC</code> с СУБД MS Access, MS SQL Server. | ||
| Строка 10: | Строка 13: | ||
Модуль <code>db</code> предоставляет несколько функций для работы с базой данных. | Модуль <code>db</code> предоставляет несколько функций для работы с базой данных. | ||
Внимание | <div style="background-color: #fff3cd; border-left: 5px solid #ffc107; padding: 15px; margin: 10px 0;"> | ||
'''Внимание!''' | |||
Все callback аргументы являются синхронными | Все callback аргументы являются синхронными. | ||
</div> | |||
===each(sql[, parameters, callback])=== | ===each(sql[, parameters, callback])=== | ||
| Строка 22: | Строка 27: | ||
Функция <code>each</code> позволяет обрабатывать многострочные результаты. Параметры можно пропустить, если они не нужны. | Функция <code>each</code> позволяет обрабатывать многострочные результаты. Параметры можно пропустить, если они не нужны. | ||
< | <syntaxhighlight lang="javascript"> | ||
function each(sql: string, callback: (row: any[]) => void): void; | |||
</syntaxhighlight> | |||
===executeScalar(sql[, parameters])=== | ===executeScalar(sql[, parameters])=== | ||
| Строка 41: | Строка 48: | ||
===ExecuteResult=== | ===ExecuteResult=== | ||
rows: <any[][]> - | *<code>rows: <any[][]></code> - результат выполнения запроса в виде двумерного массива; | ||
rowsAffected: <number> - | |||
insertedId: <number> - | *<code>rowsAffected: <number></code> - количество выбранных строк запроса; | ||
*<code>insertedId: <number></code> - идентификатор вставленной сущности (работает только для MS SQL). | |||
==Пример== | ==Пример== | ||
< | <syntaxhighlight lang="javascript"> | ||
const db = require('db'); | const db = require('db'); | ||
const message = require('message'); | const message = require('message'); | ||
| Строка 63: | Строка 72: | ||
db.execute('insert into uzer (num_user, name_short, name_full) values (?, ?, ?)', [10, 'КраткоеИмя', 'ПолноеИмя']); | db.execute('insert into uzer (num_user, name_short, name_full) values (?, ?, ?)', [10, 'КраткоеИмя', 'ПолноеИмя']); | ||
const fullName = db.executeScalar('select fioisp from login where num_rec = ?', [users[0].id]); | const fullName = db.executeScalar('select fioisp from login where num_rec = ?', [users[0].id]); | ||
</ | </syntaxhighlight> | ||
Текущая версия от 05:06, 30 декабря 2025
Общая информация
[править]Для взаимодействия с базой данных используется встроенный модуль db.
const db = require('@chemsoft/legacy-db');
Модуль работает через провайдера ODBC с СУБД MS Access, MS SQL Server.
Для СУБД Oracle используется Oracle Call Interface (OCI).
Сигнатура
[править]Модуль db предоставляет несколько функций для работы с базой данных.
Внимание!
Все callback аргументы являются синхронными.
each(sql[, parameters, callback])
[править]sql: <string>- строка SQL запроса;parameters: <any[]> | <any>- параметры запроса;callback: <Function>- функция, вызывающаяся для обработки каждой строки результата запроса;row: <any[]>- строка выборки; массив, содержащий выбираемые параметры.
Функция each позволяет обрабатывать многострочные результаты. Параметры можно пропустить, если они не нужны.
function each(sql: string, callback: (row: any[]) => void): void;
executeScalar(sql[, parameters])
[править]sql: <string>- строка SQL запроса;
parameters: <any[]> | <any>- параметры запроса.
Функция executeScalar возвращает первую колонку первой строки запроса.
execute(sql[, parameters])
[править]sql: <string>- строка SQL запроса;
parameters: <any[]> | <any>- параметры запроса;
- возвращает:
<ExecuteResult>.
Функция execute возвращает детальный результат выполнения запроса и все полученные данные.
ExecuteResult
[править]rows: <any[][]>- результат выполнения запроса в виде двумерного массива;
rowsAffected: <number>- количество выбранных строк запроса;
insertedId: <number>- идентификатор вставленной сущности (работает только для MS SQL).
Пример
[править]const db = require('db');
const message = require('message');
const users = [];
db.each('select num_rec, fioisp from login', (r) => {
const user = {};
[user.id, user.fullName] = r;
users.push(user);
message.show(user);
});
db.execute('insert into uzer (num_user, name_short, name_full) values (?, ?, ?)', [10, 'КраткоеИмя', 'ПолноеИмя']);
const fullName = db.executeScalar('select fioisp from login where num_rec = ?', [users[0].id]);