1. 建库连库
我们需要提前安装按MysqL sever端
建一个数据库mydb1
然后建一张表user如下
接下来我们利用nodejs连接MysqL数据库
connection.end(function(err){
if(err){
console.log(err.toString());
return;
}
console.log('[connection end] succeed!');
});
但是实际每次创建连接都需要一定的开销,执行效率就会有影响。下面介绍一种连接池连MysqL的方法:node-MysqL
2. 连接池配置使用
node-MysqL是目前最火的node下的MysqL驱动,是MysqLpool的一个模块。
下面的代码是提供一个连接池,getPool函数返回createPool创建的数据库连接池对象。
this.getPool=function(){
return this.pool;
}
};
module.exports = OptPool;
下面的代码展示如何使用这个连接池,插入和查询的使用。需要注意的是conn.release(); //释放一个连接放回连接池 需要再操作结束后再执行,否则后面的数据库操作会报错。
var pool = optPool.getPool();
//执行sql语句
//从连接池中获取一个连接
pool.getConnection(function(err,conn){
//----插入
var userAddsql = 'insert into user (uname,?)';
var param = ['eee','eee'];
conn.query(userAddsql,rs){
if(err){
console.log('insert err:',err.message);
return;
}
console.log('insert success');
//conn.release(); //放回连接池
})
//查询
conn.query('SELECT * from user',rs) {
if (err) {
console.log('[query] - :'+err);
return;
}
for(var i=0;i<rs.length;i++){
console.log(rs[i].uname);
}
conn.release(); //放回连接池
});
});
下面介绍一个复杂一点的增删查改的数据库操作,因相互之间有依赖,所以代码可读性就变得特别差。
var pool = optPool.getPool();
var insertSQL = 'insert into table1(name,pwd) values("conan","123"),("fens.me","456")';
var selectSQL = 'select * from table1 limit 10';
var deleteSQL = 'delete from table1';
var updateSQL = 'update table1 set name="conan update" where name="conan"';
pool.getConnection(function(err,conn){
//delete
conn.query(deleteSQL,function (err0,res0) {
if (err0) console.log(err0);
console.log("DELETE Return ==> ");
console.log(res0);
//insert
conn.query(insert<a href="/tag/sql/" target="_blank" class="keywords">sql</a>,function (err1,res1) {
if (err1) console.log(err1);
console.log("INSERT Return ==> ");
console.log(res1);
//query
conn.query(select<a href="/tag/sql/" target="_blank" class="keywords">sql</a>,function (err2,rows) {
if (err2) console.log(err2);
console.log("SELECT ==> ");
for (var i in rows) {
console.log(rows[i]);
}
//update
conn.query(update<a href="/tag/sql/" target="_blank" class="keywords">sql</a>,function (err3,res3) {
if (err3) console.log(err3);
console.log("UPDATE Return ==> ");
console.log(res3);
//query
conn.query(select<a href="/tag/sql/" target="_blank" class="keywords">sql</a>,function (err4,rows2) {
if (err4) console.log(err4);
console.log("SELECT ==> ");
for (var i in rows2) {
console.log(rows2[i]);
}
});
});
});
});
});
})