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]);
                }
            }
        })

    })

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM