Node.js是一种流行的编程语言,如用于Web应用程序的PHP和JAVA。此外,MySQL是用于存储值的最流行的数据库。Node.js的MySQL数据库驱动程序在NPM存储库下可用。在本教程中,您将学习如何使用node连接MySQL数据库.js并对MySQL数据库表执行INSERT,UPDATE,SELECT和DELETE操作。
步骤 1 – 创建 MySQL 数据库和表
首先,在MySQL中为您的应用程序创建数据库和用户。出于测试目的,我们正在创建mydb数据库并使用它。
mysql> CREATE DATABASE mydb;
mysql> USE mydb;
现在创建一个用于执行插入、更新和删除操作的示例表。
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. 安装节点.js MySQL 模块
用于 node.js 的 MySQL 驱动程序在节点包管理器 (NPM) 下可用。使用以下命令进行安装。
sudo npm install mysql
3.连接MySQL的简单应用程序
下面是一个示例节点.js程序,它将节点.js应用程序与MySQL服务器连接。它将根据连接结果显示成功和错误消息,并在程序结束时关闭连接。创建一个 JavaScript 文件应用.js。
cd myApp
vim app.js
并将以下内容添加到上面的文件中。
var mysql = require('mysql');
var dbconn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'blob'
});
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
3. 在 MySQL 表中插入数据
现在,在上面的脚本中添加代码以在 mydb 数据库的用户表中插入数据。
var mysql = require('mysql');
var dbconn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'blob'
});
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)
4. 从 MySQL 表中选择数据
现在编辑应用程序.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 = ?', [1], function (err, records) {
if (err)
throw err;
console.log('Data received from Db:n');
console.log(records);
});
5. 从 MySQL 表更新数据
现在,如果您需要更新MySQL表中的现有数据,请使用以下代码。
dbconn.query('UPDATE 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 表中删除数据
现在,如果从表中删除某些记录,请在节点中添加以下代码.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)