• Node.js Video Tutorials

Node.js - MySQL 插入数据



MySQL 数据库中的表存储一个或多个行或记录。每个记录都包含由表结构定义的列或属性。在本节中,您将学习如何使用 INSERT INTO 语句在 MySQL 表中添加新行,可以使用 MySQL 客户端以及 Node.js 程序。

假设 MySQL 服务器上已创建 mydb 数据库,并且其中包含 EMPLOYEE 表,其结构如下:

mysql> desc employee;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int         | NO   | PRI | NULL    | auto_increment |
| name   | varchar(20) | NO   |     | NULL    |                |
| age    | int         | YES  |     | NULL    |                |
| salary | float       | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

INSERT INTO 语句的语法如下:

INSERT INTO table_name (field1, field2, ......) VALUES (value1,value2, ......);

表名后面的括号是字段列表。要填充这些字段的值放在 VALUES 子句后的第二个括号中,顺序与字段相同。如果值列表的字段数量和顺序与表结构中的字段相同,则可以省略字段列表。如果表结构有任何自增字段,它们将自动填充。

打开 MySQL 客户端并发出以下 INSERT INTO 语句以在 EMPLOYEE 表中插入新记录。使用 SELECT 查询检查是否添加了新记录。

mysql> INSERT INTO employee VALUES(1, "Ravi", 25, 25000);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM employee;
+----+------+------+--------+
| id | name | age  | salary |
+----+------+------+--------+
|  1 | Ravi |   25 |  25000 |
+----+------+------+--------+
1 row in set (0.00 sec)

使用 Node.js 插入数据

现在,我们需要使用 Node.js 应用程序以编程方式在 MySQL 表中插入新记录。要在表中插入数据,必须先加载其数据库。SQL 命令 USE database 在 MySQL 客户端终端中执行此操作。您可以通过在 createConnection() 方法中添加数据库参数来使用数据库:

var mysql = require('mysql');
var con = mysql.createConnection({
   host: "localhost",
   user: "root",
   password: "mypassword",
   database: "mydb"
});

插入新记录的 Node.js 代码包含以下步骤:

  • 包含 mysql 模块

  • 调用 createConnection() 函数以获取连接对象。

  • 使用连接对象的 query() 方法,并将 INSERT INTO 查询字符串作为第一个参数传递。

示例

var mysql = require('mysql');
var con = mysql.createConnection({
   host: "localhost",
   user: "root",
   password: "mypassword",
   database: "mydb"
});
var qry =`INSERT INTO employee (name, age, salary) VALUES("Ravi", 25, 25000);`;
con.connect(function (err) {
   if (err) throw err;
   console.log("Connected!");
   con.query(qry, function (err, result) {
      if (err) throw err;
      console.log("New Record inserted successfully");
   });

   con.end();
});

输出

Connected!
New Record inserted successfully

在 MySQL 客户端终端运行 SELECT 查询以检查是否添加了新记录。

使用预处理语句插入数据

MySQL 支持预处理语句语法,其中变量数据动态添加到查询字符串中。使用预处理语句的 INSERT 查询语法如下:

qry = "INSERT INTO table_name VALUES (?,?,?)", [var1, var2, var3];

在下面的代码中,新记录的数据存储在数组中。它用作 con.query() 方法的参数。来自数组的值替换预处理查询中的 ?占位符。

var mysql = require('mysql');
var con = mysql.createConnection({
   host: "localhost",
   user: "root",
   password: "mypassword",
   database: "mydb"
});
var data = ["Ravi", 25, 25000];
var qry =`INSERT INTO employee (name, age, salary) VALUES(?,?,?);`;
con.connect(function (err) {
   if (err) throw err;
   console.log("Connected!");
   con.query(qry,data, function (err, result) {
      if (err) throw err;
      console.log("New Record inserted successfully");
   });

   con.end();
});

执行上述程序时,将存储一条值为数据数组中给定值的新记录。可以使用二维数组作为值的来源插入多条记录。

示例

var mysql = require('mysql');
var con = mysql.createConnection({
   host: "localhost",
user: "root",
   password: "mypassword",
   database: "mydb"
});
var data = [
   ["Ravi", 25, 25000],
   ["Anil", 26, 30000],
   ["Meena", 26, 27000]
];
var qry =`INSERT INTO employee (name, age, salary) VALUES(?,?,?);`;
con.connect(function (err) {
   if (err) throw err;
   console.log("Connected!");
   for (var i=0;i<data.length; i++){
      con.query(qry,data[i], function (err, result) {
         if (err) throw err;
         console.log("New Record inserted successfully");
      })
	};
   con.end();
});

通过在 MySQL 命令行客户端运行以下 SELECT 查询来检查 employee 表中的数据

mysql> SELECT * FROM employee;
+----+-------+------+--------+
| id | name  | age  | salary |
+----+-------+------+--------+
|  1 | Ravi  |   25 |  25000 |
|  2 | Anil  |   26 |  30000 |
|  3 | Meena |   26 |  27000 |
+----+-------+------+--------+
3 rows in set (0.00 sec)
广告