2013-09-26 79 views
1

我想使用node.js連接到MS SQL Server數據庫。我安裝了msnodesql模塊以用於此任務。我可以用下面的代碼連接到DB:但使用node.js +函數連接到MS SQL數據庫()

var sql = require('msnodesql'); 
var util = require('util'); 
// 
var connStr = "Driver={SQL Server Native Client 11.0};Server=myySqlDb,1433;Database=DB;UID=Henry;PWD=cat;"; 
var query = "SELECT * FROM GAData WHERE TestID = 17"; 

sql.open(connStr, function(err,conn){ 
    if(err){ 
     return console.error("Could not connect to sql: ", err); 
    } 

    conn.query(query,function(err,results){ 

     if (err){ 
      return console.error("Error running query: ", err); 
     } 
     console.log(results); 
     console.log(results.length); 
     for (var i = 0; i <= results.length; i++){ 
      util.inspect(results[i]); 
     } 
    }); 
}); 

我的目標是在各種事件,比如按鈕提交連接到數據庫,從一個HTML頁面。在按鈕點擊我要調用一個函數的Node.js來查詢數據庫的特定屬性,如以下幾點:

從HTML:

<br /><button type="submit" id="continue" onClick="verifyEmail($('#email').val())">Continue</button> 

從腳本文件:

function verifyEmail(email){ 

    var mQuery = "'EXEC WebUserRecovery '" + email + "'"; 

    sql.open(conn_str, function (err, conn) { 
    if (err) { 
     console.log("Error opening the connection!\r\n" + err); 
     return; 
    } 

    connection.query(mQuery,function(err,results){ 

     if (err){ 
      return console.error("Error running query: ", err); 
     } 

     alert(results); 
    }); 
}); 

} 

將代碼放入函數時不起作用,數據庫連接不成功。任何人都可以建議如何解決這個問題?很少有良好的文檔上msnodesql有...

+1

你似乎試圖從瀏覽器發出一個sql連接和sql查詢,這是不可能的AFAIK。 verifyEmail應該發出一個ajax請求,由節點處理以執行sql查詢並返回一些(json)結果。 – jbl

+0

你能告訴我們'verifyEmail()'在客戶端還是在node.js服務器上執行? –

+0

@jbl,這是有道理的。我會研究如何設計。 – gjw80

回答

2

服務器端.js文件(Node.js的):

var sql = require('msnodesql'); 
var util = require('util'); 
var connStr = "Driver={SQL Server Native Client 11.0};Server=myySqlDb,1433;Database=DB;UID=Henry;PWD=cat;"; 
var query = "SELECT * FROM GAData WHERE TestID = 17"; 

// Load the http module to create an http server. 
var http = require('http'); 

// Configure our HTTP server to respond with Hello World to all requests. 
var server = http.createServer(function (request, response) { 

    sql.open(connStr, function(err,conn){ 
     if(err){ 
      return console.error("Could not connect to sql: ", err); 
     } 

     conn.query(query,function(err,results){ 

      if (err){ 
       return console.error("Error running query: ", err); 
      } 
      response.writeHead(200, {"Content-Length": results.length}); 
      response.writeHead(200, {"Content-Type": "application/json"}); 
      response.end(results); 
     }); 
    }); 

}); 

// Listen on port 8000, IP defaults to 127.0.0.1 
server.listen(8000); 

// Put a friendly message on the terminal 
console.log("Server running at http://127.0.0.1:8000/"); 

客戶端.js文件或行腳本應該是像以下使用jQuery ajax調用:

var request = $.ajax({ 
    url: "http://127.0.0.1:8000/", 
    type: "GET", 
    dataType: "json" 
}); 
request.done(function(dataRcvd) { 
    alert(JSON.stringify(dataRcvd)); 
});