一、搭建环境
nodejs和MySQL的安装就不说了,安装好后,通过npm安装MySQL模块。
在自己nodejs项目的根目录,运行
npm install mysql --save
其中,--save是将mysql模块写入package.json文件的依赖模块配置中,也可以不添加此选项。
二、创建数据库
运行下面的sql语句,可创建一个简单的数据库和user表
创建数据库tsnode
CREATE DATABASE `tsnode`;
创建表user
CREATE TABLE `user` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL COMMENT '账号',
`password` varchar(45) DEFAULT NULL COMMENT '密码',
`userdesc` varchar(145) DEFAULT NULL COMMENT '备注',
`birthday` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '生日',
`logincount` int(11) DEFAULT '0' COMMENT '登录次数',
PRIMARY KEY (`userid`),
UNIQUE KEY `iduser_UNIQUE` (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='table for user manage';
三、项目js文件中引入mysql模块并操纵数据库
1、连接数据库并查询,将返回数据从控制台输出
var mysql = require('mysql');
var connection = mysql.createConnection({
'host': 'localhost',
'user': 'root',
'password': 'passoo',
'port': '3307',
'database': 'tsnode'
});
connection.connect();
connection.query('select * from user limit 0,10', function(err, rows, fields){
if(err) throw err;
console.log(rows); // 输出查询结果JSON
var birthday = rows[0].birthday;
console.log(birthday.getTime()); // 输出生日
console.log(fields); // 输出字段属性
});
connection.end();
2、使用连接池
/**
* 使用连接池
*/
var mysql = require('mysql');
var pool = mysql.createPool({
'host': 'localhost',
'user': 'root',
'password': 'passoo',
'port': '3307',
'database': 'tsnode'
});
pool.getConnection(function(err, connection){
console.log('1 connected!');
// 执行SQL语句
connection.query("INSERT INTO `tsnode`.`user` (`username`, `password`, `userdesc`) VALUES ('realwall', 'passoo', 'This is user desc2')", function(err, result){
if(err){
connection.rollback(function(){
throw err;
});
}
console.log('connection 1 insert');
console.log(result);
// 将连接释放到连接池
connection.release();
console.log('connection 1 released');
});
});
pool.getConnection(function(err, connection){
if(err) throw err;
console.log('2 connected!');
// 执行SQL语句
connection.query('select * from user limit 0,10', function(err, rows){
console.log('connection 2 query');
console.log(rows);
// 将连接释放到连接池
connection.release();
console.log('connection 2 released');
});
});