msnodesql的安装 

npm  install   msnodesql

使用msnodesql写的增删改查

var sql=require('msnodesql');

var conn_str="Driver={SQL Server Native Client 11.0};Server={127.0.0.1};Database=AccJiaowu;uid=sa;PWD=XXX;";

//添加

var insert = function(sqlscript,callback) {

   sql.open(conn_str, function (err, conn) {

        if (err) {

            console.log('发生错误');

        }

        sql.queryRaw(conn_str,sqlscript, function (err, results) {

            if (err) {

                console.log(err);

                callback(JSON.stringify("error"));

            }else {

                callback(JSON.stringify("ok"));

            }

        });

    });

}

//修改

var update = function(sqlscript,callback) {

   sql.open(conn_str, function (err, conn) {

        if (err) {

            console.log('发生错误');

        }

        sql.queryRaw(conn_str, sqlscript, function (err, results) {

            if (err) {

                console.log(err);

                 callback(JSON.stringify("error"));

            }

            else {

                callback(JSON.stringify("ok"));

            }

        });

    });

}

//查询返回集合

var selectList = function(sqlscript,callback) {

    sql.open(conn_str, function (err, conn) {

        if (err) {

            console.log('发生错误');

        }

        sql.queryRaw(conn_str, sqlscript, function (err, results) {

            if (err) {

                console.log(err);

            }else {

                 var txt=toJsonArray(results);  

                 var jsonObj=eval("("+txt+")");  

                 console.log(jsonObj); 

                 callback(jsonObj);

            }

        });

    });

}

//查询返回单个数据

var selectOne = function(sqlscript,callback) {

    sql.open(conn_str, function (err, conn) {

        if (err) {

            console.log('发生错误');

        }

        sql.queryRaw(conn_str, sqlscript, function (err, result) {

            if (err) {

                console.log(err);

            }else {

                 var txt=toJson(result);  

                 var jsonObj=eval("("+txt+")");  

                 console.log(jsonObj); 

                 callback(jsonObj);

            }

        });

    });

}

//将查询结果转成json串

function toJson(dt)    

{  

    var jsonString;  

    if (dt != undefined && dt.rows.length == 1)  

    {  

        var rowLen=dt.rows.length;  

        var colLen=dt.meta.length;  

        jsonString="{";  

        for (var j = 0; j < colLen; j++)  

        {  

            if (j < colLen - 1)  

            {  

                jsonString+="\"" + dt.meta[j].name + "\":" + "\"" + dt.rows[0][j]+ "\",";  

            }  

            else if (j == colLen - 1)  

            {  

                jsonString+="\"" + dt.meta[j].name + "\":" + "\"" + dt.rows[0][j] + "\"";  

            }  

        }  

        

        jsonString+="}";  

        return jsonString;  

    }  

    return jsonString;  

} 

//将查询结果转成json数组

function toJsonArray(dt)    

{  

    var jsonString;  

    if (dt != undefined && dt.rows.length > 0)  

    {  

        var rowLen=dt.rows.length;  

        var colLen=dt.meta.length;  

        jsonString="{";  

        jsonString+="\"data\":[";  

        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.insert = insert;
exports.update = update;
exports.selectOne = selectOne;
exports.selectList = selectList;

写sql调用封装的方法

var handlers = require("./handlers");

var result = "";

var http = require('http'),
    url = require("url");
http.createServer(function (req,res){ var arg = url.parse(req.url,true).query;  //方法一arg => aa=001&bb=002
console.log(arg);
console.log(url.parse(req.url).query);
var userID = arg.userID;
var userName = arg.userName;
var password = arg.password;
var age = arg.age;
var pathname = url.parse(req.url).pathname; console.log("userID:"+userID+";userName:"+userName+";password="+password+";age:"+age+";pathname:"+pathname); if(pathname == "/selectList"){
    var selSql = "select userID,userName,password,age from Table_1 with(nolock) ";
    handlers.selectList(selSql,function(data){
    console.log("select data:"+data);
    result = data;
  });
}else if(pathname == "/selectOne"){
    var selSql = "select count(1) as cnt from Table_1 with(nolock) where userName ='"+userName+"' and password='"+password+"'";
    handlers.selectOne(selSql,function(data){
    console.log("select data:"+data);
    result = data;
    });
}else if(pathname == "/insert"){
     var insSql = "insert into Table_1 (userName,password,age) values('"+userName+"','"+password+"',"+ age +")";
     handlers.insert(insSql,function(data){
     console.log("insert data:"+data);
     result = data;
   });
  
}else if(pathname == "/update"){
    var updSql = "update Table_1 set userName = '"+userName+"',password = '"+password+"',age = "+age+" where userID = "+userID;
    handlers.update(insSql,function(data){
     console.log("update data:"+data);
     result = data;
  });
  
}
    
   //res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});  //'Access-Control-Allow-Origin':'http://localhost/'}
   console.log(result);
   var str = arg.callback + '(' + JSON.stringify(result) + ')'
   console.log(str);
   res.end(str); }).listen(8080,"localhost");

console.log('Server running at http://localhost:8080/')

ajax调用

$.ajax({  
         url: 'http://localhost:8080/selectList',   //请求的是3000端口,应该属于跨域调用,因此dataType用jsonp  
         dataType: "jsonp",  
         //jsonpCallback: "_test",       //可以自定义‘处理’函数,默认是callback  
         cache: false,  
         jsonp:'callback',               //默认的传递处理函数是callback  
         timeout: 5000,  
         data : {},
         success: function(data) {  
             var userList = data.data;
             var tabStr="";
             for(var i=0;i<userList.length;i++){
                 tabStr += "<tr>";
                 tabStr += "<td>"+userList[i].userID+"</td>";
                 tabStr += "<td>"+userList[i].userName+"</td>";
                 tabStr += "<td>"+userList[i].password+"</td>";
                 tabStr += "<td>"+userList[i].age+"</td>";
                 tabStr += "</tr>"
             }
             $("#dataTab").html(tabStr);
         },  
         error: function(jqXHR, textStatus, errorThrown) {  
             alert('error ' + textStatus + " " + errorThrown);  
         }  
    });

msnodesql的使用的更多相关文章

  1. node.js 访问sql server的 node_modules “msnodesql"的安装编译方法

    http://stackoverflow.com/questions/19661811/unable-to-download-msnodesql-0-2-1-v0-10-x64-msi 首先要满足以下 ...

  2. nodejs怎么同步从一个数据库查询函数中返回一个值

    var sql=require('msnodesql'); var conn_str="Driver={SQL Server Native Client 11.0};Server={127. ...

  3. azure git 托管

    azure git上传部署步骤:(首次提交)cd 至本地代码路径git initgit add .git commit –m "initial commit"git remote ...

  4. NodeJS下访问SQL Server

    1.下载node-sqlserver (1)msnodesql (msnodesql-0.2.1-v0.8-x64.msi)下载地址:下载  自行选择与自己系统相符的版本,点击安装. (2)msnod ...

  5. Nodejs与Net 和SQL 交互利器Edge.js

    https://github.com/tjanczuk http://www.cnblogs.com/joylee/archive/2013/02/05/msnodesql.html edge.js这 ...

随机推荐

  1. hdu 4034 2011成都赛区网络赛 逆向floyd **

    给出一个最短路邻接矩阵,求出构图的最小边数 正常的floyd的k放在最外面是为了防止i到j的距离被提前确定,而逆向的floyd,i到j的距离已经确定,所以需要在i到j之间枚举k,注意需要break,否 ...

  2. Spring容器初始化过程

    一.Spring 容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依 ...

  3. Web分布式架构演变过程

    1 单台服务器 2 应用服务器与数据库服务器 文件服务器分开 3 数据库 缓存  读写分离  实时写 非实时写 4 应用服务器集群  需要再配一台”负载均衡调度器“,nginx 5 数据库拆封 主库 ...

  4. 第二十五篇:在SOUI中做事件分发处理

    不同的SOUI控件可以产生不同的事件.SOUI系统中提供了两种事件处理方式:事件订阅 + 事件处理映射表(参见第八篇:SOUI中控件事件的响应) 事件订阅由于直接将事件及事件处理函数连接,不存在事件分 ...

  5. Codeforces Round #248 (Div. 2) C. Ryouko's Memory Note

    题目链接:http://codeforces.com/contest/433/problem/C 思路:可以想到,要把某一个数字变成他的相邻中的数字的其中一个,这样总和才会减少,于是我们可以把每个数的 ...

  6. Java学习笔记(八)——封装

    一.封装 1.定义 将类的信息隐藏在类的内部,不允许外部程序直接进行访问,而是通过该类提供的方法来实现对隐藏信息的操作和方法. 2.优点 (1)只能通过规定的方法访问数据 (2)隐藏类的细节,方便修改 ...

  7. javascript概述

    在我们进行javascript视频的时候,第一集,看到的学习要点: 1.什么是javascript?         a.一种具有面向对象能力的.解释型的程序设计语言(直接读取运行,而非编译型)   ...

  8. 圆形图片CircleImageView

    github源码路径: https://github.com/hdodenhof/CircleImageView 第一步:将CircleImageView复制 第二步:将attrs.xml复制 第三步 ...

  9. 【JDBC 报错】Connections could not be acquired from the underlying database!

    项目启动报错: [2016-07-13 10:04:15,074] ERROR org.apache.ibatis.executor.BaseExecutor Could not get a data ...

  10. LoadRunner常用事务判断

    一.数据值比较 lr_start_transaction("终审") if (atoi(lr_eval_string("{MyOutputParm}"))==a ...