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数据
//         });

//     });
// }
