我們剛剛發佈了預覽驅動程序使用Node.js語言爲SQL Server連接。你可以在這裏找到它: Introducing the Microsoft Driver for Node.JS for SQL Server。
驅動程序支持回調(在這裏,我們連接到本地SQL Server實例):
// Query with explicit connection
var sql = require('node-sqlserver');
var conn_str = "Driver={SQL Server Native Client 11.0};Server=(local);Database=AdventureWorks2012;Trusted_Connection={Yes}";
sql.open(conn_str, function (err, conn) {
if (err) {
console.log("Error opening the connection!");
return;
}
conn.queryRaw("SELECT TOP 10 FirstName, LastName FROM Person.Person", function (err, results) {
if (err) {
console.log("Error running query!");
return;
}
for (var i = 0; i < results.rows.length; i++) {
console.log("FirstName: " + results.rows[i][0] + " LastName: " + results.rows[i][1]);
}
});
});
或者,您可以使用事件(在這裏,我們連接到SQL Azure的又名的Windows Azure SQL數據庫):
// Query with streaming
var sql = require('node-sqlserver');
var conn_str = "Driver={SQL Server Native Client 11.0};Server={tcp:servername.database.windows.net,1433};UID={username};PWD={Password1};Encrypt={Yes};Database={databasename}";
var stmt = sql.query(conn_str, "SELECT FirstName, LastName FROM Person.Person ORDER BY LastName OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY");
stmt.on('meta', function (meta) { console.log("We've received the metadata"); });
stmt.on('row', function (idx) { console.log("We've started receiving a row"); });
stmt.on('column', function (idx, data, more) { console.log(idx + ":" + data);});
stmt.on('done', function() { console.log("All done!"); });
stmt.on('error', function (err) { console.log("We had an error :-(" + err); });
如果您遇到任何問題,請在Github上提交一個問題:https://github.com/windowsazure/node-sqlserver/issues
我一直在尋找一個這樣的解決方案現在幾周...感謝您添加問題。現在我還使用瘦MVC應用程序來處理SQL連接,但我不喜歡它。令人煩惱的是,我能找到的所有答案指向相同的非工作模塊。 – 2012-04-28 07:57:25
@MarcelPopescu https://github.com/pekim/tedious似乎爲我工作,但有以下限制:它不支持事務(即使那些沒有明確簽發但在存儲過程中發生的事務),它不支持過程返回多個結果集。無論如何,返回多個結果集的過程應該被重寫。但沒有交易的生活正在將Node.js + MSSQL的使用限制在一個簡單的幾乎透明的前端(謝天謝地,這正是我寫的)。 – penartur 2012-05-01 11:53:03
@MarcelPopescu我希望有一天MS會爲Node發佈官方的MSSQL驅動程序,就像他們對Azure平臺的其他功能所做的一樣。雖然當時我可能會離開現在的僱主,並會使用舊的Postgres:D – penartur 2012-05-01 11:55:34