zoukankan      html  css  js  c++  java
  • node.js通过msnodesql访问SQL Server

    Node.js一直都与mysql , Nosql 配合使用,对于Sql  Server却没有很好的支持,一直都是小众技术人员自己编写访问程序。

    2012年微软公司官方发行一款Node.js访问Sql Server的驱动程序——msnodesql ,让Node.js访问SQL Server更加简单。

    安装

    msnodesql 下载地址:下载  自行选择与自己系统相符的版本,点击安装。

    msnodesql 官方地址:https://github.com/WindowsAzure/node-sqlserver 含wiki 和 疑问解答 。

    在node.js环境下,安装方式和其他驱动安装一样,安装命令:nmp install msnodesql 

    安装过程中需要注意的两个问题:

    1、安装之前必须安装SQL Server Native Client 11.0 32位下载地址:下载 64位下载地址:下载 ,安装此程序不需要SQL server2012支持,经测试,SQL 2005和SQL 2008 可以正常安装使用。

    2、安装过程中,如出现错误,检查是否在管理员界面下进行命令安装,这个问题我纠结了好长一段时间。

        

    (右键——以管理员身份运行)

    使用

    引用驱动 

     var sql = require('msnodesql');

    建立数据库连接 

    var conn_str = "Driver={SQL Server Native Client 11.0};Server={.};Database={nodetest};uid=sa;PWD=123456;";

    不要被 SQL Server Native Client 11.0 吓到,可以完美支持sql 2005和sql 2008 的。

    打开数据库

    sql.open(conn_str, function (err, conn) {
        if (err) {
            console.log("Error opening the connection!");
            return;
        }
     
    //这里是查询语句
    });

    SQL操作

    sql.queryRaw(conn_str,"SELECT * FROM TestTable", 
    
    function (err, results) 
    { 
    if (err) 
    { 
    console.log("Error running query!"); 
    return; 
    } 
    for (var i = 0; i < results.rows.length; i++) 
    { 
      console.log("0:" + results.rows[i][0]); } 
    });

    注意:此处的写法与wiki文档的写法有些不同,我用过wiki文档的写法(https://github.com/WindowsAzure/node-sqlserver/wiki),有时会出现无法查询数据的情况,w我这种写法是参考源代码中参数的写法,queryRaw包含四个参数:

    connectionstring:链接字符串(wiki里面的居然没有用这个,直接用function里面的参数 conn,搞不懂)
    query:SQL语句
    param:参数(可选的)
    callback:回传函数,操作完以后返回的事件

    一个完整的例子
    var sql=require('msnodesql');
    var conn_str="Driver={SQL Server Native Client 11.0};Server={.};Database={nodetest};uid=sa;PWD=123456;";
     
    sql.open(conn_str, function (err, conn) {
            if (err) {
                console.log('发生错误');
            }
    
            sql.queryRaw(conn_str, "select * from users", function (err, results) {
                if (err) {
                    console.log(err);
                }
                else {
                    for (var i = 0; i < results.rows.length; i++) {
                        console.log(results.rows[i][0] + results.rows[i][1]);
                    }
                }
            })
    
        })
  • 相关阅读:
    Educational Codeforces Round 22 C. The Tag Game
    Codeforces Round #421 (Div. 1) B. Mister B and PR Shifts(技巧)
    Codeforces Round #422 (Div. 2) D. My pretty girl Noora
    Codeforces Round #422 (Div. 2) C. Hacker, pack your bags!
    hdu3756(三分)
    hihocoder1496(高维前缀和)
    AOJ731(不等式)
    UVALive7042(博弈论)
    Codeforces 284E(概率)
    hdu4778(状态压缩dp)
  • 原文地址:https://www.cnblogs.com/joylee/p/msnodesql.html
Copyright © 2011-2022 走看看