安装:npm install tedious
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var connection = new Connection({
'userName':'sa', //用户名
'password':'123456', //密码
'server':'127.0.0.1', //数据库地址
'options':{
'port':1433, //端口号
'database':'test', //数据库名
'encrypt':true //是否启用加密传输,测试了两台机器,一台开了无法连接
}
});
connection.on('connect',function(err){
//判断有没有出错
if(err){
console.log(err);
}else{
//生成sql执行语句,并指定接收数据完毕后执行的回调函数
var request = new Request('select * from tt',function(err,rowCount){
//判断有没有出错
if(err){
console.log(err);
}
else rows['rowCount'] = rowCount; //rowCount是语句执行影响行数
console.log(rows);
connection.close(); //记得关闭连接
});
var rows = {};
var n = 0;
//查询数据返回,select才有返回,每次一行记录
request.on('row',function(columns){
rows[n] = {};
//遍历出列名和值
columns.forEach(function(s){
rows[n][s.metadata.colName] = s.value; //列名和值
});
n++;
});
//执行状态返回
request.on('doneProc',function(r,m,status){
//成功返回0,一般不会用到,在Request的回调判断err即可
if(status)
rows = request;
});
//执行语句
connection.execSql(request);
}
});
如果想执行 insert语句后返回id,可以在回调里再执行:
request = new Request("select @@identity",function(err, rowCount){ //这个是返回插入成功的id
callback(param); //把查询结果返回给回调函数
});
request.on('row', function(columns) {
param['id'] = columns[0].value; //获取id
});
connection.execSql(request);
我们可以将数据库操作的方法进行封装,就可以在其他的文件中使用了。
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
exports.mssql = function(config){
this.connection = new Connection(config);
this.query = function(str,callback){ //执行查询
var connection = this.connection;
var rows={};
connection.on('connect', function(err){ //连接数据库,执行匿名函数
if(err){
callback({'err':err['message']+'请检查账号、密码是否正确,且数据库存在'});
}else{
var request = new Request(str,function(err, rowCount){
if(err)err = {'err':err['message']};
callback(err,rows);
connection.close();
});
var n=0;
request.on('row', function(columns) { //查询成功数据返回
rows[n]={};
columns.forEach(function(column) {
rows[n][column.metadata.colName] = column.value; //获取数据
});
n++;
});
connection.execSql(request); //执行sql语句
}
});
}
}
现在就可以方便的使用了
/**
* New node file
*/
var mssql = require('./mssql.js');
var conn = new mssql.mssql({'userName':'s2424','password':'12313','server':'123.123.123.123','options':{'port':2314,'database':'rwr'}});
conn.query('select * from base_customer', function(err,data){
if(!err){
console.log(data) //成功返回数据
}
else {
console.log(err) //出错返回
}
}
);