准备工作
在使用node操作mysql数据库时,需要先下载mysql模块:
npm install mysql --save-dev在引入mysql模块后,就可以进行数据库的连接和其他的操作了。
// test.js
var mysql = require('mysql');一、连接数据库
首先保证本地已经安装数据库,并已正常启动,然后开始进行连接:
// test.js
var mysql = require('mysql');// 创建连接
var conn = mysql.createConnection({
host : '127.0.0.1',
user : 'root',
password : '123',
database : 'test'
});
// 创建连接后不论是否成功都会调用
conn.connect(function(err){
if(err) throw err;
console.log('connect success!');
});
// 其他的数据库操作,位置预留
// 关闭连接时调用
conn.end(function(err){
if(err) throw err;
console.log('connect end');
})
执行
node test.js后,就会输出:
$ node test.js
connect success!
connect end连接成功,然后连接关闭。这就说明程序可以正常连接数据库了,然后就开始进行增删改查的操作。
二、CURD
比如我们有这样的一个user表,里面有4个字段,其中uid是自增字段:
| uid | username | password | |
| 1 | meizi | meizi | 123@qq.com |
| 2 | test | test | 456@qq.com |
我们就对这个表进行增删改查的操作。
mysql中有个query方法可以用来执行任意正确的sql语句,然后在回调函数里给出执行sql语句后的结果。query方法是异步执行的,若并列书写多个query方法的话,是不能按照书写顺序依次阻塞式执行的。
2.1 查询
使用最普遍最多的就是查询操作了。
conn.query('SELECT * FROM `user`', function(err, result, fields){
if(err) throw err;
console.log(result);
});
console.log( 'select ended!' );输出的结果:
select ended! // 先输出[
RowDataPacket {
uid: 1,
username: 'meizi',
password: 'meizi
email: '123@qq.com'
},
RowDataPacket {
uid: 2,
username: 'test',
password: 'test
email: '456@qq.com'
}
]可以看到,结果集是一个数组,数组中的每条数据都是一个RowDataPacket对象,在使用时,可以像json对象一样获取数据,也可以使用
JSON.stringify把result转换为json字符串,但是,result并不是JSON数据。而且,即使结果集中只有一条数据,也是以数组的形式返回的。









