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]);
                    }
                }
            })
    
        })
  • 相关阅读:
    Codeforces 787D. Legacy 线段树优化建图+最短路
    Codeforces 1051E. Vasya and Big Integers
    BZOJ3261 最大异或和
    BZOJ3531 SDOI2014 旅行
    洛谷P2468 SDOI 2010 粟粟的书架
    2018 ICPC 焦作网络赛 E.Jiu Yuan Wants to Eat
    HDU6280 From Tree to Graph
    HDU5985 Lucky Coins 概率dp
    (HDU)1334 -- Perfect Cubes (完美立方)
    (HDU)1330 -- Deck (覆盖物)
  • 原文地址:https://www.cnblogs.com/joylee/p/msnodesql.html
Copyright © 2011-2022 走看看