В этом уроке вы узнаете, как вставлять данные в таблицу 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, используя помеченные литералы шаблона, чтобы вставить новую строку в таблицу.