摘要:在本教程中,您将学习如何从 Node.js 应用程序向表中插入一行或多行。
要将新行插入表中,请执行以下步骤:
- 连接到 MySQL 数据库。 。
- 通过调用
connection
对象上的query()
方法来执行INSERT
语句。 - 关闭数据库连接。
请注意,我们将重用包含 MySQL 数据库信息的 config.js 模块。
如果您还没有遵循上一个教程,这里是 config.js 模块:
let config = {
host : 'localhost',
user : 'root',
password: '',
database: 'todoapp'
};
module.exports = config;
Code language: JavaScript (javascript)
在表中插入一行
以下 insert.js 程序将新行插入到todos
表中:
let mysql = require('mysql');
let config = require('./config.js');
let connection = mysql.createConnection(config);
// insert statment
let sql = `INSERT INTO todos(title,completed)
VALUES('Learn how to insert a new row',true)`;
// execute the insert statment
connection.query(sql);
connection.end();
Code language: JavaScript (javascript)
让我们执行 insert.js 程序。
> node insert.js
Code language: JavaScript (javascript)
并检查todos
表中的数据:
mysql> select * from todos;
+----+-------------------------------+-----------+
| id | title | completed |
+----+-------------------------------+-----------+
| 1 | Learn how to insert a new row | 1 |
+----+-------------------------------+-----------+
1 row in set (0.00 sec)
Code language: JavaScript (javascript)
正如您所看到的,程序在todos
表中插入了一个新行。
插入一行并返回插入的id
以下 insert2.js 程序将新行插入todos
表并返回插入的 id。
let mysql = require('mysql');
let config = require('./config.js');
let connection = mysql.createConnection(config);
let stmt = `INSERT INTO todos(title,completed)
VALUES(?,?)`;
let todo = ['Insert a new row with placeholders', false];
// execute the insert statment
connection.query(stmt, todo, (err, results, fields) => {
if (err) {
return console.error(err.message);
}
// get inserted id
console.log('Todo Id:' + results.insertId);
});
connection.end();
Code language: JavaScript (javascript)
要将数据传递到 SQL 语句,请使用问号 (?) 作为占位符。
在此示例中,我们分别使用两个问号 (?,?) 表示title
和completed
字段。
执行查询后,我们可以从结果对象的insertId属性中获取插入的id。
>node insert2.js
Todo Id:2
Code language: JavaScript (javascript)
一次插入多行
以下 insert3.js 程序将多行插入到todos
表中:
let mysql = require('mysql');
let config = require('./config.js');
let connection = mysql.createConnection(config);
// insert statment
let stmt = `INSERT INTO todos(title,completed) VALUES ? `;
let todos = [
['Insert multiple rows at a time', false],
['It should work perfectly', true]
];
// execute the insert statment
connection.query(stmt, [todos], (err, results, fields) => {
if (err) {
return console.error(err.message);
}
// get inserted rows
console.log('Row inserted:' + results.affectedRows);
});
// close the database connection
connection.end();
Code language: JavaScript (javascript)
请注意,我们在INSERT
语句中仅使用一个问号 (?),并且多行数据是一个数组的数组。
您可以通过结果对象的affectedRows
属性访问插入的行数。
>node insert3.js
Row inserted:2
Code language: JavaScript (javascript)
如结果所示,插入了两行,这正是我们所期望的。
在本教程中,您学习了如何从 Node.js 程序向表中插入一行或多行。
本教程有帮助吗?