var mssql = require('mssql'); //包含mssql模块 //----------------------------------mssql 连接设置-------------------------------------- function mssqlconnet(ho, db) { return { user: 'usestudio', password: 'usestudio-1', server: ho, database: db, port: 11302 }; } //----------------------------------mssql 查询语句-------------------------------------- exports.usselect = function (paramsarr, callback) { var _params; //截取存储过程参数数组变量 var _sql = "EXEC " + paramsarr[2]; //拼接sqlserver语句 if (paramsarr[3]) { //判断是否存在参数 _params = paramsarr.slice(3); //截取参数 } console.log(paramsarr[0]); //输出数据库地址 console.log(paramsarr[1]); //输出数据库名称 var config = mssqlconnet(paramsarr[0], paramsarr[1]); //更新设置 var connection = new mssql.ConnectionPool(config, function (err) { //创建连接 var _ps = new mssql.PreparedStatement(connection); //调用查询方法 var _param = {}; //定义存储过程参数对象 if (_params) { //判断是否存在参数 _params.forEach((value, key) => { //循环处理参数 var _key = `param${key}`; //拼接参数名称 _param[_key] = value; //设置的参数对象中 if (typeof value == "number") { //数字类型参数处理 _ps.input(index, mssql.Int); //添加整形参数类型 } else if (typeof value == "string" && /^[a-fA-F0-9]{8}(-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}$/.test(value)) { //guid参数处理 _ps.input(_key, mssql.UniqueIdentifier); //添加guid参数类型 } else if (typeof value == "string") { //字符串参数处理 _ps.input(_key, mssql.NVarChar); //添加字符串参数类型 } _sql += ` @${_key},`; //拼接sql语句 }); _sql = _sql.slice(0, _sql.length - 1); //删除多余“,”号 } _ps.prepare(_sql, function (err) { //格式化处理预执行sql语句 if (err) //存在错误则输出日志 console.log(err); _ps.execute(_param, function (err, data) { //传入参数执行sql语句 if (err) console.log(err); else callback(JSON.stringify(data.recordsets)); //输出结果 _ps.unprepare(function (err) { //释放连接 if (err) //存在错误则输出日志 console.log(err); }); }); }); }); } // var sql = require('mssql');//包含mssql模块 // //----------------------------------mssql 连接设置-------------------------------------- // function mssqlconnet(ho, db) { // return { // user: 'usestudio', // password: 'usestudio-1', // server: ho, // database: db, // port:11302 // }; // } // exports.usselect = function (pArr, callback) { // var _pro = "", i; //定义循环变量,对字符串解密 // //for (i = 0; i < pArr.length; i++) { pArr[i] = decodeURIComponent(pArr[i]); } //解密中文字符串。 // //如果前台没有传参数过来,则需进这里 // if (!pArr[3]) { // _pro = "EXEC " + pArr[2]; // } else { //否则有参数 // _pro = "EXEC " + "" + pArr[2] + " '"; //命令拼凑 // for (i = 3; i < pArr.length; i++) { _pro += pArr[i]; if (i < pArr.length - 1) _pro += "','"; } //拼凑参数 // _pro += "'"; //拼凑结束。 // } // console.log(pArr[0]); // console.log(pArr[1]); // var config = mssqlconnet(pArr[0], pArr[1]);//更新设置 // var connection = new sql.ConnectionPool(config, function (err) {//创建连接 // var request = new sql.Request(connection);//创建连接 // request.query(_pro, function (err, recordsets) {//执行语句 // callback(JSON.stringify(recordsets)); //返回json数据 // }); // }); // }