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