Node.js是一种流行的编程语言如PHP和JAVA的Web应用程序。同时MySQL是用于存储值最流行的数据库。对于Node.js的MySQL数据库驱动程序已在NPM仓库中。在本教程中,您将学习如何使用Node.js对MySQL数据库表连接MySQL数据库,并做INSERT,UDATE,SELECT和DELETE操作。
1. 创建MySQL数据库和表
首先在MySQL中创建一个数据库和用户的应用程序。出于测试目的,我们正在创造mydb的数据库,并使用它。
mysql> CREATE DATABASE mydb;
mysql> USE mydb;
现在创建做插入,更新一个例子表和删除操作。
mysql> CREATE TABLE users (
id int(11) NOT NULL AUTO_INCREMENT,
firstname varchar(30),
lastname varchar(30),
email VARCHAR(50),
creation_date TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
也创造了从应用程序访问数据库的MySQL用户。
mysql> GRANT ALL on mydb.* to 'myusr'@'localhost' identified by '123456';
mysql> FLUSH PRIVILEGES;
2. 安装Node.js的MySQL模块
MySQL的驱动程序node.js正在节点程序包管理器(NPM)可用。使用下面的命令来安装它。
$ sudo npm install mysql
3. 简单的应用程序来连接mysql
下面是示例node.js的程序,将Node.js应用与MySQL服务器连接。它会根据连接的结果显示成功和错误消息,并收于程序端的连接。创建JavaScript文件
app.js。
$ cd myApp
$ vim app.js
并添加以下内容,以上面的文件。
var mysql = require('mysql');
var dbconn = mysql.createConnection({
host : 'localhost',
user : 'myusr',
password : '123456',
database : 'mydb'
});
dbconn.connect(function(err){
if(err){
console.log('Database connection error');
}else{
console.log('Database connection successful');
}
});
dbconn.end(function(err) {
// Function to close database connection
});
现在,使用执行的NodeJS上面的脚本,并确保数据库正常与否连接。
$ node app.js
Database connection successful
4. 插入数据到MySQL表
现在,在上面的脚本中添加代码中
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的数据库中的用户表中添加记录。
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)
5. 从MySQL表选择数据
现在编辑app.js脚本,并添加以下代码。这将获取从users表中的所有记录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);
});
6. 从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)
7. 从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)