Выполнить подготовленный оператор в пакете в NodeJS, используя node-ms sql? - PullRequest
4 голосов
/ 11 марта 2020

В java Я могу отправить несколько наборов параметров параметризованного запроса в одном go (см. Пример кода ниже).

Как можно добиться sh того же результата в NodeJs , используя узел-мс sql пакет?

  PreparedStatement ps = c.prepareStatement("INSERT INTO employees VALUES (?, ?)");
  ps.setString(1, "John");
  ps.setString(2,"Doe");
  ps.addBatch();
  ps.clearParameters();
  ps.setString(1, "Dave");
  ps.setString(2,"Smith");
  ps.addBatch();
  ps.clearParameters();
  int[] results = ps.executeBatch();

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Вы можете выполнить массовую вставку, используя метод request.bulk.

Этот пример - node-mssql пакет драйверов.

массовый (таблица, [опции,] [обратный вызов])
Выполнить массовую вставку.

Аргументы

таблица - sql. Таблица.

options - Объект параметров, передаваемый водителю (только в настоящее время утомительный). Необязательный. Если аргумент является функцией, он будет рассматриваться как обратный вызов.

обратный вызов (err, rowCount) - Обратный вызов, который вызывается после завершения массовой вставки или возникновения ошибки. Необязательный. Если опущен, возвращается Обещание.

Пример:

const request = new sql.Request(/* [pool or transaction] */)

try {
    const table = new sql.Table('employees ') // or temporary table, e.g. #temptable
    table.rows.add(1, "John");
    table.rows.add(2,"Doe");
    table.rows.add(1, "Dave");
    table.rows.add(2,"Smith");

    const request = new sql.Request()
    await request.bulk(table);
} catch(error) {
    console.error(error.message);
}

Подробнее о массовой вставке можно прочитать здесь

0 голосов
/ 20 марта 2020

Не уверен, поможет ли это.

Проверьте, полезно ли это:

https://blog.stvmlbrn.com/2018/07/27/dynamic-where-clauses-with-parameterized-queries-in-node-mysql.html

...