nodejs进阶(6)—连接MySQL数据库示例
1.建库连库
连接MySQL数据库需要安装支持
npminstallmysql
我们需要提前安装按mysqlsever端
建一个数据库mydb1
mysql>CREATEDATABASEmydb1; mysql>SHOWDATABASES; +--------------------+ |Database| +--------------------+ |information_schema| |mysql| |mydb1| |performance_schema| +--------------------+ 4rowsinset(0.00sec)
然后建一张表user如下
createtableuser( idintnotnullprimarykeyauto_increment, nameVARCHAR(100)notnull, pwdVARCHAR(100)notnull, create_dateTIMESTAMPNULLDEFAULTnow() )ENGINE=InnoDBDEFAULTCHARSET=utf8; CREATEUNIQUEINDEXt_quiz_IDX_0onuser(name);
接下来我们利用nodejs连接mysql数据库
varmysql=require('mysql');//调用MySQL模块
//创建一个connection
varconnection=mysql.createConnection({
host:'localhost',//主机
user:'root',//MySQL认证用户名
password:'root',//MySQL认证用户密码
database:'mydb1',
port:'3306'//端口号
});
//创建一个connection
connection.connect(function(err){
if(err){
console.log('[query]-:'+err);
return;
}
console.log('[connectionconnect]succeed!');
});
//----插入
varuserAddSql='insertintouser(name,pwd)values(?,?)';
varparam=['fff','123'];
connection.query(userAddSql,param,function(err,rs){
if(err){
console.log('inserterr:',err.message);
return;
}
console.log('insertsuccess');
});
//执行查询
connection.query('SELECT*fromuserwhereid=?',[2],function(err,rs){
if(err){
console.log('[query]-:'+err);
return;
}
for(vari=0;i<rs.length;i++){
console.log('Thesolutionis:',rs[i].uname);
}
});
//关闭connection
connection.end(function(err){
if(err){
console.log(err.toString());
return;
}
console.log('[connectionend]succeed!');
});
但是实际每次创建连接都需要一定的开销,执行效率就会有影响。下面介绍一种连接池连mysql的方法:node-mysql
2.连接池配置使用
node-mysql是目前最火的node下的mysql驱动,是mysqlpool的一个模块。
下面的代码是提供一个连接池,getPool函数返回createPool创建的数据库连接池对象。
varmysql=require('mysql');//调用MySQL模块
functionOptPool(){
this.flag=true;//是否连接过
this.pool=mysql.createPool({
host:'localhost',//主机
user:'root',//MySQL认证用户名
password:'root',//MySQL认证用户密码
database:'test',
port:'3306'//端口号
});
this.getPool=function(){
returnthis.pool;
}
};
module.exports=OptPool;
下面的代码展示如何使用这个连接池,插入和查询的使用。需要注意的是conn.release();//释放一个连接放回连接池需要再操作结束后再执行,否则后面的数据库操作会报错。
varOptPool=require('./models/OptPool');
varoptPool=newOptPool();
varpool=optPool.getPool();
//执行SQL语句
//从连接池中获取一个连接
pool.getConnection(function(err,conn){
//----插入
varuserAddSql='insertintouser(uname,pwd)values(?,?)';
varparam=['eee','eee'];
conn.query(userAddSql,param,function(err,rs){
if(err){
console.log('inserterr:',err.message);
return;
}
console.log('insertsuccess');
//conn.release();//放回连接池
})
//查询
conn.query('SELECT*fromuser',function(err,rs){
if(err){
console.log('[query]-:'+err);
return;
}
for(vari=0;i<rs.length;i++){
console.log(rs[i].uname);
}
conn.release();//放回连接池
});
});
下面介绍一个复杂一点的增删查改的数据库操作,因相互之间有依赖,所以代码可读性就变得特别差。
varOptPool=require('./models/OptPool');
varoptPool=newOptPool();
varpool=optPool.getPool();
varinsertSQL='insertintotable1(name,pwd)values("conan","123"),("fens.me","456")';
varselectSQL='select*fromtable1limit10';
vardeleteSQL='deletefromtable1';
varupdateSQL='updatetable1setname="conanupdate"wherename="conan"';
pool.getConnection(function(err,conn){
//delete
conn.query(deleteSQL,function(err0,res0){
if(err0)console.log(err0);
console.log("DELETEReturn==>");
console.log(res0);
//insert
conn.query(insertSQL,function(err1,res1){
if(err1)console.log(err1);
console.log("INSERTReturn==>");
console.log(res1);
//query
conn.query(selectSQL,function(err2,rows){
if(err2)console.log(err2);
console.log("SELECT==>");
for(variinrows){
console.log(rows[i]);
}
//update
conn.query(updateSQL,function(err3,res3){
if(err3)console.log(err3);
console.log("UPDATEReturn==>");
console.log(res3);
//query
conn.query(selectSQL,function(err4,rows2){
if(err4)console.log(err4);
console.log("SELECT==>");
for(variinrows2){
console.log(rows2[i]);
}
});
});
});
});
});
})
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。