Node.JS SQL Server: Вставить

В этом уроке вы узнаете, как вставлять данные в таблицу SQL Server из программы Node.js.

Это руководство начинается с того места, где закончилось руководство по подключению к SQL Server из Node.js.

Вставка новой строки в таблицу

Шаг 1. Создайте новый файл с именем insert.js в каталоге проекта.

Шаг 2. Добавьте следующий код в insert.js, чтобы вставить нового автора в таблицу Authors:

import sql from 'mssql';
import { config } from './config.js';
const insertAuthor = async(firstName, lastName, birthDate) => {
  try {
    // Connect to the database
    await sql.connect(config);
    // Execute the insert statement
    await sql.query`INSERT INTO Authors(FirstName, LastName, BirthDate) 
                    VALUES(${firstName}, ${lastName}, ${birthDate})`;
    console.log(`The author ${firstName} ${lastName} was inserted!`);
  } catch(err) {
    console.error('Error inserting new author:', err);
  } finally {
    // Close the database connection
    await sql.close();
  }
};
insertAuthor('Agatha', 'Christie', '1890-09-15');

Как это работает.

Сначала импортируйте объект sql из модуля mssql и объект config из модуля config:

import sql from 'mssql';
import { config } from './config.js';

Обратите внимание, что объект конфигурации содержит конфигурацию базы данных, определенную при подключении к SQL Server из руководства по программе Node.js.

Во-вторых, определите функцию insertAuthor, которая имеет три параметра firstName, lastName и birthDate:

const insertAuthor = async(firstName, lastName, birthDate) => {

В-третьих, подключитесь к SQL Server, вызвав метод connect объекта sql с объектом конфигурации:

await sql.connect(config);

В-четвертых, выполните оператор INSERT:

 await sql.query`INSERT INTO Authors(FirstName, LastName, BirthDate) 
                 VALUES(${firstName}, ${lastName}, ${birthDate})`;

Обратите внимание, что пакет mssql использует помеченные литералы шаблонов для построения операторов SQL таким образом, чтобы автоматически обрабатывать предотвращение SQL-инъекций и параметризованные запросы.

В-пятых, выведите на консоль сообщение о том, что автор был успешно добавлен:

console.log(`The author ${firstName} ${lastName} was inserted!`);

В-шестых, если в процессе вставки произошла ошибка, отобразите сообщение об ошибке в блоке catch:

console.error('Error inserting new author:', err);

В-седьмых, закройте соединение с базой данных в блоке finally, вызвав метод close() объекта sql:

await sql.close();

Наконец, вызовите функцию insertAuthor, чтобы вставить автора с именем Агата, фамилией Кристи и датой рождения 1890-09-15 в таблицу Authors:

insertAuthor('Agatha', 'Christie', '1890-09-15');

Шаг 3. Выполните следующую команду npm для запуска файла insert.js:

npm --env-file=.env insert.js

Проверка вставки

Шаг 1. Откройте SQL Server Management Studio и подключите базу данных BookStore.

Шаг 2. Запрос данных из таблицы «Авторы»:

SELECT * FROM Authors;

Выход:

AuthorID | FirstName | LastName | BirthDate
---------+-----------+----------+------------
1        | Agatha    | Christie | 1890-09-15
(1 row)

Вставить несколько строк в таблицу

Шаг 1. Создайте новый файл с именем insert-many.js в каталоге проекта.

Шаг 2. Добавьте следующий код в insert-many.js для вставки нескольких авторов из массива в таблицу Authors:

import sql from 'mssql';
import { config } from './config.js';
async function insertAuthors(authors) {
  try {
    // Connect to the database
    await sql.connect(config);
    // Construct the insert query
    let query = 'INSERT INTO Authors(FirstName, LastName, BirthDate) VALUES ';
    // Build the values part of the query
    const values = authors
      .map(
       ({ firstName, lastName, birthDate }) =>
          `('${firstName}', '${lastName}', '${birthDate}')`
      )
      .join(', ');
    // Complete the query
    query += values;
    // Execute the query
    await sql.query(query);
    console.log(`${authors.length} authors were inserted successfully!`);
  } catch(err) {
    console.error('Error inserting authors:', err);
  } finally {
    // Close the database connection
    await sql.close();
  }
}
const authors = [
  { firstName: 'George', lastName: 'Orwell', birthDate: '1903-06-25' },
  { firstName: 'Jane', lastName: 'Austen', birthDate: '1775-12-16' },
  { firstName: 'Leo', lastName: 'Tolstoy', birthDate: '1828-09-09' },
];
// Call the function to insert the authors
insertAuthors(authors);

Как это работает(сосредоточимся на новой части)

Сначала создадим оператор вставки, который вставит несколько строк в таблицу Authors:

// Construct the insert query
let query = 'INSERT INTO Authors(FirstName, LastName, BirthDate) VALUES ';
// Build the values part of the query
const values = authors
  .map(
   ({ firstName, lastName, birthDate }) =>
      `('${firstName}', '${lastName}', '${birthDate}')`
  )
  .join(', ');
// Complete the query
query += values;

Во-вторых, выполните оператор вставки, используя метод query() объекта SQL:

await sql.query(query);

В-третьих, инициализируем массив объектов-авторов для вставки:

const authors = [
  { firstName: 'George', lastName: 'Orwell', birthDate: '1903-06-25' },
  { firstName: 'Jane', lastName: 'Austen', birthDate: '1775-12-16' },
  { firstName: 'Leo', lastName: 'Tolstoy', birthDate: '1828-09-09' },
];

На практике вы можете прочитать данные из CSV-файла или получить данные из вызова API.

Наконец, вызовите функцию insertAuthors(), чтобы вставить объекты авторов из массива авторов:

insertAuthors(authors);

Шаг 3. Выполните следующую команду в терминале, чтобы выполнить файл index-many.js:

node --env-file=.env insert-many.js

Если вы видите следующее сообщение, вы успешно вставили трех авторов из массива в таблицу «Авторы».

Загрузите исходный код проекта

Загрузите исходный код проекта

Краткое содержание

  • Создайте оператор INSERT, используя помеченные литералы шаблона, чтобы вставить новую строку в таблицу.
Мирослав С.

Автор статей, ИБ-специалист