NodeJS连接MySQL以及基本操作

(一)NodeJS连接MySQL

使用连接池可以对数据库的连接进行更好的控制管理。新建mysql.js,并放到myLibs文件夹(用于存放自己写的模块)。如果myLibs文件夹在node_modules中,那么在需要引用的文件中var query = require('myLibs/mysql');即可进行对数据库的操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var mysql = require("mysql");

var pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '000000',
database: 'test',
port: '3306'
});

var query = function(sql, options, callback){
pool.getConnection(function(err, conn){
if(err){
callback(err, null, null);
}else{
conn.query(sql, options, function(err, results, fields){
conn.release();
callback(err, results, fields);
});
}
});
};

module.exports=query;

(二)基本操作

在此记录一下基本操作,直接以部分代码示例。不要忘记引入:var query = require('myLibs/mysql');

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 基本的增加操作INSERT
var body = req.body;
var email = body.email;
var pw = password.md5(body.password + password.SECRET);

// INSERT INTO 表 (字段列表) VALUES (值列表)
query("INSERT INTO `user_table`(email, password) VALUES(?, ?)", [email, pw] ,
function(err, results, fields){
if(err){
return res.status(500).send('database error!');
}else{
// do something here
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 基本的删除操作DELETE
var body = req.body;
var email = body.email;
var pw = password.md5(body.password + password.SECRET);

// DELETE FROM 表 WHERE 条件
query("DELETE FROM `user_table` WHERE email = ? AND password = ?", [email, pw] ,
function(err, results, fields){
if(err){
return res.status(500).send('database error!');
}else{
// do something here
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 基本的修改操作UPDATE
var email = req.session.user[0].email;
var img = req.url.substring(req.url.lastIndexOf("/")+1);

// UPDATE 表 SET 字段=值,字段=值,…WHERE 条件
// CONCAT()是MySQL中的重要函数,用来连接字符串
query("UPDATE `user_table` SET `save` = CONCAT(save, ?) WHERE `email` = ?",
[img, email], function(err, results, fields){
if(err){
return res.status(500).send('database error!');
}else{
// do something here
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 基本的查询操作SELECT 
var body = req.body;
var email = body.email;
var pw = password.md5(body.password + password.SECRET);

// 在`user_table`数据表中查询邮箱和密码为特定值的某行记录
// SELECT * FROM 表 WHERE 条件,*表示返回全部内容,可以限制
query("SELECT * FROM `user_table` WHERE email = ? AND password = ?", [email, pw] ,
function(err, results, fields){
if(err){
res.status(500).send('database error!');
}else{
// do something here
}
});

// 使用LIKE字句进行模糊查询,可以在WHERE子句中使用LIKE子句,通常与“%”一起使用
var celebrity = req.query.celebrity;
var sql = "SELECT * FROM `celebrity_table` WHERE name LIKE '" + "%" + celebrity + "%'";
query(sql, function(err, results, fields){
if(err){
res.status(500).send('database error!');
}else{
// do something here
}
});