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的使用的更多相关文章
- node.js 访问sql server的 node_modules “msnodesql"的安装编译方法
http://stackoverflow.com/questions/19661811/unable-to-download-msnodesql-0-2-1-v0-10-x64-msi 首先要满足以下 ...
- nodejs怎么同步从一个数据库查询函数中返回一个值
var sql=require('msnodesql'); var conn_str="Driver={SQL Server Native Client 11.0};Server={127. ...
- azure git 托管
azure git上传部署步骤:(首次提交)cd 至本地代码路径git initgit add .git commit –m "initial commit"git remote ...
- NodeJS下访问SQL Server
1.下载node-sqlserver (1)msnodesql (msnodesql-0.2.1-v0.8-x64.msi)下载地址:下载 自行选择与自己系统相符的版本,点击安装. (2)msnod ...
- Nodejs与Net 和SQL 交互利器Edge.js
https://github.com/tjanczuk http://www.cnblogs.com/joylee/archive/2013/02/05/msnodesql.html edge.js这 ...
随机推荐
- PHP实现上一篇、下一篇
//php实现上一篇.下一篇 获取当前浏览文章id $id = isset($_GET[ ? intval($_GET['id']) : ""; 下一篇文章 $query = my ...
- 在Salesforce中通过编写C#程序调用dataloadercliq的bat文件取触发调用data loader来批量处理数据
通过这篇文章 http://www.cnblogs.com/mingmingruyuedlut/p/3413903.html 我们已经知道了Data Loader可以对Salesforce的Objec ...
- Linux2.6 内核的 Initrd 机制解析
文章来自:www.ibm.com/developerworks/cn/linux/l-k26initrd/ 1.什么是 Initrd initrd 的英文含义是 boot loader initial ...
- 【微信Java开发 --2】接入微信公众平台开发,配置自己的服务器,验证过程
接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑好我们就开始:1.填写好我们的URL和Token[此处是已经通过验证的] ...
- 去除手机端a标签等按下去背景色
a,button,input,textarea,label,i,em{/*highlight*/ -webkit-tap-highlight-color: rgba(255,0,0,0); borde ...
- linux(centos6)搭建ftp服务器
前提 ssh服务已经开启,关闭防火墙,主机和虚拟机能ping通 查看ssh和防火墙的状态 service sshd status service iptables status 开启ssh服务 ser ...
- UI中经常出现的下拉框下拉自动筛选效果的实现
小需求是当你在第一个下拉框选择了国家时,会自动更新第二个省份的下拉框,效果如下 两个下拉选择Html如下: <select id="country_select"> & ...
- Linux crontab 定时任务命令详解
一.简介 crontab 命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行.通常,crontab 储存的指令被守护进程激活, cr ...
- Azkaban 2.5.0 job type 插件安装
一.环境及软件 安装环境: 安装目录: /usr/local/ae/ankaban Hadoop 安装目录 export HADOOP_HOME=/usr/local/ae/hadoop-1.2.1 ...
- Word2Vec源码解析
Reference:http://blog.csdn.net/itplus/article/details/37969519 (Word2Vec解析(部分有错)) 源码:http://pan.bai ...