前言
Node作为一门后端语言,无可避免就需要对数据库进行操作。本篇讲解Node对mysql数据库的基本操作
内容
在对mysql进行操作前,应该首先在文件的目录下下载MySQL模块
注意:安装前先把目录cd到js文件的目录下,这样执行安装命令时,会找到目录下node_modules,并安装在此目录下,否则使用mysql时,你会出现 Error: Cannot find module ‘mysql’
1.对数据操作两种方式
直接操作数据库,其实就是操作数据库的时候才会对数据库进行连接,执行完操作需要对连接进行关闭。
1.目录结构如下
2.代码如下
var mysql=require('mysql'); //加载mysql的模块
var connection=mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'1',
database:'test',
port:'3306'
})
//连接mysql
connection.connect(function(err){
if(err){
console.log('query-'+err);
return;
}
console.log('conection connect succedd');
})
//插入方法
var userAddsql='insert into user(uname,pwd) values(?,?)';
var param=['aaa','aaa'];
connection.query(userAddsql,param,function(err,rs){
if(err){
console.log('insert err',err.message);
return;
}
console.log('insert success');
});
var obj=new Object();
//查询方法
connection.query('select * from user',function(err,rs,fields){
if(err){
console.log('insert err',err.message);
return;
}
console.log('insert success'+rs[0].uname);
console.log(fields);
});
//更新方法
var updatesql='update user set pwd=? where uname=?'
var params=['bbb','aaa']
connection.query(updatesql,params,function(err,rs){
if(err){
console.log('update err',err.message);
return;
}
console.log('update succes')
});
//删除方法
connection.query('delete from user',function(err,rs){
if(err){
console.log('insert err',err.message);
return;
}
console.log('delete succes)
});
//关闭connect连接
connection.end(function(err){
if(err){
return;
}
console.log('connection end succedd');
})
连接池操作,在数据库启动的时候就会创建多个连接放在连接池中,操作数据库的时候直接从连接池中取,节省了开销
1.目录结构
2.代码如下
optfile.js
var mysql=require('mysql');
function OptPool(){
this.falg=true; //是否连接过
this.pool=mysql.createPool({
host:'127.0.0.1',
user:'root',
password:'1',
database:'test',
port:'3306'
});
this.getPool=function(){
if(this.falg){
//第一次进入,初始化这个连接池
this.pool.on('connection',function(connection){
connection.query('select session auto_increment_increment');
this.falg=false;
})
}
return this.pool;
}
}
module.exports=OptPool;
mysqlpool.js
var OptPool=require('./OptPool');
var optPool=new OptPool();
var pool=optPool.getPool();
if(data.uname!==undefined&&data.pwd!==undefined){
pool.getConnection(function(err,conn){
if(err){
console.log(err);
}
//插入方法
var userAddsql='insert into user(uname,pwd) values(?,?)';
var param=[data.uname,data.pwd];
conn.query(userAddsql,param,function(err,rs){
if(err){
console.log('insert err',err.message);
return;
}
console.log('insert success');
});
})
//更新方法
var updatesql='update user set pwd=? where uname=?'
var params=['bbb','aaa']
conn.query(updatesql,params,function(err,rs){
if(err){
console.log('update err',err.message);
return;
}
console.log('update succes')
});
//删除方法
conn.query('delete from user',function(err,rs){
if(err){
console.log('insert err',err.message);
return;
}
console.log('delete succes)
});
}
3.转到目录下,指定dos命令
>>node mysqlpool.js
总结
大多数情况下都在采用连接池的方式,会大大节省开销,本篇都是一些简单的操作,等到后面学习了一些express等框架,都会都这些代码进行包装。