Node.js 是一种流行的 Web 应用程序编程语言,如 PHP 和 JAVA。此外,MySQL 是用于存储值的最流行的数据库。 Node.js 的 MySQL 数据库驱动程序可在 NPM 存储库下找到。在本教程中,您将学习如何使用 Node.js 连接 MySQL 数据库并对 MySQL 数据库表执行 INSERT、UPDATE、SELECT 和 DELETE 操作。
第 1 步 – 创建 MySQL 数据库和表
首先,在 MySQL 中为您的应用程序创建数据库和用户。出于测试目的,我们正在创建 mydb 数据库并使用它。
mysql> CREATE DATABASE mydb;
mysql> USE mydb;
现在创建一个用于执行插入、更新和删除操作的示例表。
|
CREATE TABLE users (
id int(11) NOT NULL 自动递增,
名 varchar(30),
lastname varchar(30),
email VARCHAR(50),
创建日期 时间戳,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 自动递增=1 ;
|
还创建一个 mysql 用户用于从应用程序访问数据库。
mysql> GRANT ALL on mydb.* to 'myusr'@'localhost' identified by '123456';
mysql> FLUSH PRIVILEGES;
2.安装Node.js MySQL模块
Node.js 的 MySQL 驱动程序可在节点包管理器 (NPM) 下找到。使用以下命令来安装它。
sudo npm install mysql
3. 连接MySQL的简单应用程序
下面是一个示例node.js 程序,它将连接node.js 应用程序和MySQL 服务器。它将根据连接结果显示成功和错误消息,并在程序结束时关闭连接。创建 JavaScript 文件app.js.
cd myApp
vim app.js
并将以下内容添加到上述文件中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
var mysql = require('mysql');
var dbconn = mysql.创建连接({
host : '本地主机',
user : 'myusr',
password : '123456',
database : 'mydb'
});
dbconn.connect(function(err){
if(err){
console.log(“数据库连接错误”);
}else{
console.log('数据库连接成功');
}
});
dbconn.end(function(err) {
// 关闭数据库连接的函数
});
|
现在使用nodejs执行上述脚本并确保数据库是否正确连接。
node app.js
Database connection successful
3.在MySQL表中插入数据
现在添加上面脚本中的代码以将数据插入users表中mydb数据库。
var mysql = require('mysql');
var dbconn = mysql.createConnection({
host : 'localhost',
user : '<DB_USER>',
password : '<DB_PASSWORD>',
database : '<DB_NAME>'
});
dbconn.connect(function(err){
if(err){
console.log('Database connection error');
}else{
console.log('Database connection successful');
}
});
var record= { firstname: 'Rahul', lastname: 'Kumar', email: 'abc@domain.com' };
dbconn.query('INSERT INTO users SET ?', record, function(err,res){
if(err) throw err;
console.log('Last record insert id:', res.insertId);
});
dbconn.end(function(err) {
// Function to close database connection
}
现在使用命令行执行 app.js 脚本,并确保数据已正确插入数据库中。重复此步骤几次,更新上述脚本中的值。
node app.js
Database connection successful
Last record insert id: 5
另外,使用mysql命令行检查mydb数据库下的users表中添加的记录。
mysql> select * from users;
+----+-----------+----------+----------------+---------------------+
| id | firstname | lastname | email | creation_date |
+----+-----------+----------+----------------+---------------------+
| 5 | Rahul | Kumar | abc@domain.com | 2016-01-22 17:16:19 |
| 6 | John | Smith | xyz@domain.com | 2016-01-22 17:16:55 |
+----+-----------+----------+----------------+---------------------+
2 row in set (0.01 sec)
4.从MySQL表中选择数据
现在编辑 app.js 脚本并添加以下代码。这将从 mydb 数据库中的用户表中获取所有记录。
dbconn.query('SELECT * FROM users',function(err, records){
if(err) throw err;
console.log('Data received from Db:n');
console.log(records);
});
或者您可以根据特定条件通过选择值自定义搜索。
dbconn.query('SELECT * FROM users WHERE id = ?' [5] ,function(err, records){
if(err) throw err;
console.log('Data received from Db:n');
console.log(records);
});
5.从MySQL表更新数据
现在,如果您需要更新 MySQL 表中的现有数据,请使用以下代码。
dbconn.query('SELECT users SET email = ? WHERE id = ?', ['new@domain.com', 6], function(err, result){
if(err) throw err;
console.log('Record Updated ' + result.changedRows + ' rows');
});
现在检查数据库表中的值。
mysql> select * from users;
+----+-----------+----------+----------------+---------------------+
| id | firstname | lastname | email | creation_date |
+----+-----------+----------+----------------+---------------------+
| 5 | Rahul | Kumar | abc@domain.com | 2016-01-22 17:16:19 |
| 6 | John | Smith | new@domain.com | 2016-01-22 17:16:55 |
+----+-----------+----------+----------------+---------------------+
2 row in set (0.01 sec)
6.删除MySQL表中的数据
现在,如果您从表中删除一些记录,请在您的 Node.js 应用程序代码中添加以下代码。
dbconn.query('DELETE FROM users WHERE id = ?', [6], function(err, result){
if(err) throw err;
console.log('Record Updated ' + result.affectedRows + ' rows');
});
现在检查数据库表中的值。
mysql> select * from users;
+----+-----------+----------+----------------+---------------------+
| id | firstname | lastname | email | creation_date |
+----+-----------+----------+----------------+---------------------+
| 5 | Rahul | Kumar | abc@domain.com | 2016-01-22 17:16:19 |
+----+-----------+----------+----------------+---------------------+
2 row in set (0.01 sec)