我们刚刚发布了预览驱动程序使用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