Node.js连接Sql Server 2008及数据层封装详解(2)

/* Author: Felix.X.Zhang Date: 2014-6-21 Introduction: this module provides you with the operations of add,del,update,select. */ //pre-required params var sql = require('msnodesql'); var xml=require('../mymodule/operateXML.js'); var paramObj=xml.getParamObj(); var conn_str="Driver={"+paramObj.mydb_driver+"};Server={"+paramObj.mydb_server+"};Database={"+paramObj.mydb_database+"};uid="+paramObj.mydb_user+";PWD="+paramObj.mydb_pwd+";"; //open database sql.open(conn_str, function (err, conn) { if (err) { console.log(err); } }); function exeScript(sqlscript){ sql.queryRaw(conn_str, sqlscript, function (err, results) { if (err) { console.log(err); } else { console.log(results); } }); } function select(sqlscript){ sql.queryRaw(conn_str, sqlscript, function (err, results) { if (err) { console.log(err); } else { var txt=toJson(results,paramObj.table_name); var jsonObj=eval("("+txt+")"); console.log(jsonObj); } }); } function del(sqlscript){ exeScript(sqlscript); } function update(sqlscript){ exeScript(sqlscript); } function add(sqlscript){ exeScript(sqlscript); } //convert table to json function toJson(dt,tbName) { var jsonString; if (dt != undefined && dt.rows.length > 0) { var rowLen=dt.rows.length; var colLen=dt.meta.length; jsonString="{"; jsonString+="\""+tbName+"\":["; for (var i = 0; i < rowLen; i++) { jsonString+="{"; for (var j = 0; j < colLen; j++) { if (j < colLen - 1) { jsonString+="\"" + dt.meta[j].name + "\":" + "\"" + dt.rows[i][j]+ "\","; } else if (j == colLen - 1) { jsonString+="\"" + dt.meta[j].name + "\":" + "\"" + dt.rows[i][j] + "\""; } } if (i == rowLen - 1) { jsonString+="}"; } else { jsonString+="},"; } } jsonString+="]}"; return jsonString; } return jsonString; } exports.add=add; exports.del=del; exports.update=update; exports.select=select;

封装的db层也很简单,只有select输出json,其他只执行。

3.测试

var db=require('./dbHelper.js'); db.select("select top 10 * from FelixTest");

当然了,在实际项目中可以在调用中间加一个bll层,让具体的业务逻辑去生成sql脚本,前台不需要去组装sql,而db层也只要sqlscript。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/68eb7af900835afa13e9888cc784d0c7.html