Перейти к содержанию

База данных: различия между версиями

Материал из wiki.chemsoft.ru
 
(не показано 9 промежуточных версий этого же участника)
Строка 1: Строка 1:
==Общая информация==
Для взаимодействия с базой данных используется встроенный модуль db.
Для взаимодействия с базой данных используется встроенный модуль db.


<code>const db = require('@chemsoft/legacy-db');</code>
<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> позволяет обрабатывать многострочные результаты. Параметры можно пропустить, если они не нужны.


<code>function each(sql: string, callback: (row: any[]) => void): void;</code>
<syntaxhighlight lang="javascript">
function each(sql: string, callback: (row: any[]) => void): void;
</syntaxhighlight>


===executeScalar(sql[, parameters])===
===executeScalar(sql[, parameters])===
sql: <string> - строка SQL запроса
*<code>sql: <string></code> - строка SQL запроса;
parameters: <any[]> | <any> - параметры запроса
 
Функция executeScalar возвращает первую колонку первой строки запроса.
*<code>parameters: <any[]> | <any></code> - параметры запроса.
 
Функция <code>executeScalar</code> возвращает первую колонку первой строки запроса.
 
===execute(sql[, parameters])===
*<code>sql: <string></code> - строка SQL запроса;
 
*<code>parameters: <any[]> | <any></code> - параметры запроса;


===execute(sql[, parameters)===
*возвращает: <code><ExecuteResult></code>.
sql: <string> - строка SQL запроса
 
parameters: <any[]> | <any> - параметры запроса
Функция <code>execute</code> возвращает детальный результат выполнения запроса и все полученные данные.
Возвращает: <ExecuteResult>
Функция execute возвращает детальный результат выполнения запроса и все полученные данные.


===ExecuteResult===
===ExecuteResult===
rows: <any[][]> - Результат выполнения запроса в виде двумерного массива
*<code>rows: <any[][]></code> - результат выполнения запроса в виде двумерного массива;
rowsAffected: <number> - Количество выбранных строк запроса
 
insertedId: <number> - Идентификатор вставленной сущности (работает только для MS SQL)
*<code>rowsAffected: <number></code> - количество выбранных строк запроса;
 
*<code>insertedId: <number></code> - идентификатор вставленной сущности (работает только для MS SQL).


==Пример==
==Пример==


<pre>
<syntaxhighlight lang="javascript">
const db = require('db');
const db = require('db');
const message = require('message');
const message = require('message');
Строка 58: Строка 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]);
</pre>
</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]);