sqlserver.js 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. var mssql = require('mssql'); //包含mssql模块
  2. //----------------------------------mssql 连接设置--------------------------------------
  3. function mssqlconnet(ho, db) {
  4. return {
  5. user: 'usestudio',
  6. password: 'usestudio-1',
  7. server: ho,
  8. database: db,
  9. port: 11302
  10. };
  11. }
  12. //----------------------------------mssql 查询语句--------------------------------------
  13. exports.usselect = function (paramsarr, callback) {
  14. var _params; //截取存储过程参数数组变量
  15. var _sql = "EXEC " + paramsarr[2]; //拼接sqlserver语句
  16. if (paramsarr[3]) { //判断是否存在参数
  17. _params = paramsarr.slice(3); //截取参数
  18. }
  19. console.log(paramsarr[0]); //输出数据库地址
  20. console.log(paramsarr[1]); //输出数据库名称
  21. var config = mssqlconnet(paramsarr[0], paramsarr[1]); //更新设置
  22. var connection = new mssql.ConnectionPool(config, function (err) { //创建连接
  23. var _ps = new mssql.PreparedStatement(connection); //调用查询方法
  24. var _param = {}; //定义存储过程参数对象
  25. if (_params) { //判断是否存在参数
  26. _params.forEach((value, key) => { //循环处理参数
  27. var _key = `param${key}`; //拼接参数名称
  28. _param[_key] = value; //设置的参数对象中
  29. if (typeof value == "number") { //数字类型参数处理
  30. _ps.input(index, mssql.Int); //添加整形参数类型
  31. } else if (typeof value == "string" && /^[a-fA-F0-9]{8}(-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}$/.test(value)) { //guid参数处理
  32. _ps.input(_key, mssql.UniqueIdentifier); //添加guid参数类型
  33. } else if (typeof value == "string") { //字符串参数处理
  34. _ps.input(_key, mssql.NVarChar); //添加字符串参数类型
  35. }
  36. _sql += ` @${_key},`; //拼接sql语句
  37. });
  38. _sql = _sql.slice(0, _sql.length - 1); //删除多余“,”号
  39. }
  40. _ps.prepare(_sql, function (err) { //格式化处理预执行sql语句
  41. if (err) //存在错误则输出日志
  42. console.log(err);
  43. _ps.execute(_param, function (err, data) { //传入参数执行sql语句
  44. if (err)
  45. console.log(err);
  46. else
  47. callback(JSON.stringify(data.recordsets)); //输出结果
  48. _ps.unprepare(function (err) { //释放连接
  49. if (err) //存在错误则输出日志
  50. console.log(err);
  51. });
  52. });
  53. });
  54. });
  55. }
  56. // var sql = require('mssql');//包含mssql模块
  57. // //----------------------------------mssql 连接设置--------------------------------------
  58. // function mssqlconnet(ho, db) {
  59. // return {
  60. // user: 'usestudio',
  61. // password: 'usestudio-1',
  62. // server: ho,
  63. // database: db,
  64. // port:11302
  65. // };
  66. // }
  67. // exports.usselect = function (pArr, callback) {
  68. // var _pro = "", i; //定义循环变量,对字符串解密
  69. // //for (i = 0; i < pArr.length; i++) { pArr[i] = decodeURIComponent(pArr[i]); } //解密中文字符串。
  70. // //如果前台没有传参数过来,则需进这里
  71. // if (!pArr[3]) {
  72. // _pro = "EXEC " + pArr[2];
  73. // } else { //否则有参数
  74. // _pro = "EXEC " + "" + pArr[2] + " '"; //命令拼凑
  75. // for (i = 3; i < pArr.length; i++) { _pro += pArr[i]; if (i < pArr.length - 1) _pro += "','"; } //拼凑参数
  76. // _pro += "'"; //拼凑结束。
  77. // }
  78. // console.log(pArr[0]);
  79. // console.log(pArr[1]);
  80. // var config = mssqlconnet(pArr[0], pArr[1]);//更新设置
  81. // var connection = new sql.ConnectionPool(config, function (err) {//创建连接
  82. // var request = new sql.Request(connection);//创建连接
  83. // request.query(_pro, function (err, recordsets) {//执行语句
  84. // callback(JSON.stringify(recordsets)); //返回json数据
  85. // });
  86. // });
  87. // }