• 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)
廣告