NodeJS下访问SQL Server

1、下载node-sqlserver

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

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

开始我是通过(1)来下载node-sqlserver的,但是发现在编译build的那一步怎么都没运行通过,我的操作系统是64位的,后来在网上看到一个老外说,不要下载msi来安装,最好通过GitHub网站来下载zip包。

2、打开msnodesql 文件夹下的README.md文件,里面有说到要安装的东西。

3、安装node-gyp,打开命令行,输入命令:

npm install -g node-gyp

4、下载安装python 2.7.6,注意必须是python 2.7.x版本,我开始下载的是3.4.0版本,但是不支持gyp。

  官方下载地址:https://www.python.org/download/ 

5、下载安装Visual C++ 2010 - the Express edition

     官方下载地址:http://www.visualstudio.com/zh-cn/downloads/ 

6、在第一步中下载的node-sqlserver-master.zip解压之后的文件夹放到测试项目下的node_modules目录下,并把文件夹名称“node-sqlserver-master”修改为“msnodesql”。

  然后在命令行里进入到\node_modules\msnodesql中,执行如下命令

node-gyp configure

  这会为C++源代码创建一个解决方案和项目。成功之后再执行命令:

node-gyp build

  编译成功之后,会在msnodesql文件夹的build\Release下生成一个sqlserver.node文件。

7、清除掉build下除“Release\sqlserver.node”文件之外的所有东西。

  同时把sqlserver.node文件复制到msnodesql\lib文件夹中,可以打开该文件夹中的sqlserver.native.js文件,里面有调用到sqlserver.node文件。

  清除掉msnodesql下的binding.gyp文件,如果不清除,会以为msnodesql没有编译。

8、安装debugging: 在测试项目的目录下新增一个文件“IISNode.yml”,文件的内容为:

loggingEnabled: true
devErrorsEnabled: true

  如果项目正式上线,请删除此文件。

9、写代码测试数据库连接

 

var conn_str = "DSN=JobTasks;uid=sa;PWD=DB41Pswd;DATABASE=JobTasks";

var mssql = require('msnodesql');


mssql.open(conn_str, function (err, conn) {
    if (err) {
        console.log("Error opening the connection!");
        console.log(err);
        return;
    }

    mssql.queryRaw(conn_str, "select * from test", 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] + ' ' + results.rows[i][2]);
            }
        }
    })

    mssql.query(conn_str,  "INSERT INTO test (ID, Name, [Enable]) VALUES (?,?,?)", ['T0005', 'Test_NodeSql', 'N'], function( e, r ) {

        if (e) {
            console.log(e);
        }
    });
});

 

posted @ 2014-05-08 17:24  linyujade  阅读(15036)  评论(3编辑  收藏  举报