一、安装MySQL
这一步一定不能落下,我一开始图方便就直接运行了node.js代码,结果出现了error。
我安装后的数据库用户名和密码均为默认值,分别为用户名“root”和密码为空,每到提示输入密码时直接回车即可。
二、建立可使用的数据库
这一步可以有两种做法:
- 其一:直接使用命令行创建一个数据库并添加数据来使用。
其二:编写后缀为‘.sql’的文件并将其导入到数据库,下面详解做法二操作步骤:
- SQL文件[websites.sql]:
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for `websites`
-- ----------------------------
DROP TABLE IF EXISTS `websites`;
CREATE TABLE `websites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
`url` varchar(255) NOT NULL DEFAULT '',
`alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
`country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of `websites`
-- ----------------------------
BEGIN;
INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鸟教程', 'http://www.runoob.com/', '4689', 'CN'), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
2.进入SQL命令行模式,新建数据库test后退出到cmd:
3.在cmd中导入websites.sql文件到数据库test:
三、启用数据库
进入SQL命令行模式并启用数据库test
四、执行node.js代码
这里的执行文件为test.js
1. 实现基本的连接、查询与关闭连接:
var mysql = require('mysql'); //调用MySQL模块
//创建一个connection
var connection = mysql.createConnection({
host : 'localhost', //主机
user : 'root', //MySQL认证用户名
// password : '000000', //MySQL认证用户密码,没有密码可省略
// port: '3306', //端口号,默认为3306
database: 'test' //数据库名称
});
//创建一个connection
connection.connect(function(err){
if(err){
console.log('[query] - :'+err);
return;
}
console.log('[connection connect] succeed!');
});
//执行SQL语句
connection.query('SELECT * FROM websites', function(err, result) {
if (err) {
console.log('[query] - :'+ err.message);
return;
}
console.log('--------------------------------');
console.log('Result: \n', result);
console.log('--------------------------------');
});
//关闭connection
connection.end(function(err){
if(err){
return;
}
console.log('[connection end] succeed!');
});
执行结果如下:
2.插入数据
// 插入数据
var addSQL = 'INSERT INTO websites(id, name, url, alexa, country) VALUES (0, ?, ?, ?, ?)'
var addSQLParams = ['咋啦爸爸','http://localhost','2','CN']
connection.query(addSQL, addSQLParams, function (err, result) {
if (err) {
console.log('[INSERT ERROR] - ', err.message)
return
}
console.log('----------------- INSERT ---------------')
console.log('[INSERT ID] - ', result)
console.log('----------------------------------------')
})
注意这里的result并不是执行插入操作后更新的数据库,而是一系列参数:
再次查询数据库,发现已经更新:
3. 修改数据
// 修改数据
var modSQL = 'UPDATE websites SET name = ?, url = ? WHERE id = ?'
var modSQLParams = ['咋了妈妈', 'http://127.0.0.1', 6]
connection.query(modSQL, modSQLParams, function (err, result) {
if (err) {
console.log('[UPDATE ERROR] - ', err.message)
return
}
console.log('------------- UPDATE --------------');
console.log('Result: \n', result);
console.log('----------------------------------');
})
返回参数:
数据库更新:
4. 删除数据
// 删除数据
var modSQL = 'DELETE FROM websites WHERE id = 6'
connection.query(modSQL, function (err, result) {
if (err) {
console.log('[DELETE ERROR] - ', err.message)
return
}
console.log('------------- DELETE --------------');
console.log('Result: \n', result);
console.log('----------------------------------');
})
删除成功同时返回参数:
其实使用node.js操作MySQL的基本思想就是建立连接后再query中使用MySQL语句。
代码和sql文件参考:Node.js 连接 MySQL