node.js连接MySQL实例

Node.js连接MySQL实例。如何使用Node.js的连接MySQL数据库,并做INSERT,UDATE,SELECT和MySQL数据库表中删除的操作。

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)