从零学习node.js之mysql数据库的操作(五)

2020-06-17 05:54:20易采站长站整理

准备工作

在使用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是自增字段:

uidusernamepasswordemail
1meizimeizi123@qq.com
2testtest456@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数据。而且,即使结果集中只有一条数据,也是以数组的形式返回的。