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

2020-06-17 05:52:05易采站长站整理

param.mydb_pwd=mydb.attr('pwd').value();
param.table_name=table.attr('name').value();
//console.log(param.mydb_server+" "+param.table_name);
return param;
}
exports.getParamObj=getParamObj;

方法很简单,同步读取xml文件后利用libxml模块将data解析为对象,最后将所有属性全部封装到param中。(异步读取参考上面注释段)

2.dbHelper.js


/*
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;