有什么办法可以让我的Node.js应用程序与Microsoft SQL通信?我还没有野外看到任何MS SQL驱动程序吗?
我将一个非常简单的应用程序放在一起,并且需要能够与现有的MS SQL数据库进行通信(否则,我本来应该使用mongoDB或Redis)
有什么办法可以让我的Node.js应用程序与Microsoft SQL通信?我还没有野外看到任何MS SQL驱动程序吗?
我将一个非常简单的应用程序放在一起,并且需要能够与现有的MS SQL数据库进行通信(否则,我本来应该使用mongoDB或Redis)
Answers:
我们刚刚发布了用于SQL Server连接的Node.JS预览驱动程序。您可以在这里找到它们:http : //blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx
原来的问题是旧的,现在使用节点MSSQL由@Patrik西梅克一个包装作为回答繁琐由@ Tracker1是最好的方式去作为回答。
接受的答案中提到的Windows / Azure node-sqlserver驱动程序要求您安装疯狂的前提条件列表:Visual C ++ 2010,SQL Server Native Client 11.0,python 2.7.x以及您的64位Windows 7 SDK服务器。如果您询问我,您不想在Windows Server上安装所有这些GB的软件。
您真的想使用Tedious。但也可以使用node-mssql对其进行包装,并使编码变得更加容易。
2014年8月更新
2015年2月更新-2.x(稳定,npm)
这是明显的繁琐:
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var config = {
server: '192.168.1.212',
userName: 'test',
password: 'test'
};
var connection = new Connection(config);
connection.on('connect', function(err) {
executeStatement();
}
);
function executeStatement() {
request = new Request("select 42, 'hello world'", function(err, rowCount) {
if (err) {
console.log(err);
} else {
console.log(rowCount + ' rows');
}
connection.close();
});
request.on('row', function(columns) {
columns.forEach(function(column) {
if (column.value === null) {
console.log('NULL');
} else {
console.log(column.value);
}
});
});
request.on('done', function(rowCount, more) {
console.log(rowCount + ' rows returned');
});
// In SQL Server 2000 you may need: connection.execSqlBatch(request);
connection.execSql(request);
}
这是将Tedious作为依赖项的node-mssql。用这个!
var sql = require('mssql');
var config = {
server: '192.168.1.212',
user: 'test',
password: 'test'
};
sql.connect(config, function(err) {
var request = new sql.Request();
request.query("select 42, 'hello world'", function(err, recordset) {
console.log(recordset);
});
});
最近刚刚发布了几个新的node.js SQL Server客户端。我写了一个叫做node-tds的东西,还有另一个叫做乏味的
您可以使用node-tds.js:
TDS协议对node.js的令人兴奋的实现,以允许与sql server通信...
用法:
var mssql = require('./mssql'); var sqlserver = new mssql.mssql(); sqlserver.connect({'Server':__IP__,'Port':'1433','Database':'','User Id':'','Password':''}); var result = sqlserver.execute("SELECT * FROM wherever;");
*EXPERIMENTAL and currently ABANDONED*
您可以使用另一个模块-node-mssql。它使用其他TDS模块作为驱动程序,并提供易于使用的统一界面。它还添加了额外的功能和错误修复。
额外功能:
(将我的回答与另一个问题重复)。
我建议使用node-mssql,它是其他连接器的不错包装,默认是我以前的选择(Tedious),它带来了更好的接口。这是JavaScript的实现,没有编译要求,这意味着您可以在Windows和非Windows环境中工作。
另一种选择,如果你不介意引进.NET或单用二进制桥是使用edge.js。如果您想在node.js中利用.Net库,那会非常好
node-tds被放弃,node-odbc无法在Windows上运行,并且MS node-sqlserver驱动程序似乎无法在非Windows上运行(并且有一些愚蠢的要求)。
TSQLFTW-WIN(Dows)的T-SQL-作者Fosco Marotto https://github.com/gfosco/tsqlftw
它是C#和ADO .NET托管的代码解决方案,带有Node.js可以导入和使用的C ++包装器。
如果您知道.NET,则可以尝试使用WCF数据服务(ADO.NET数据服务);请参阅。编写用于数据访问的WCF应用程序,并使用odata(类固醇上的REST)与数据库进行交互
如果您使用SOA并使用SQL Server 2005,则可以签出Microsoft SQL Server 2005的本机XML Web服务。
http://msdn.microsoft.com/zh-CN/library/ms345123(v=sql.90).aspx
您可以将SQL Server作为Web服务(HTTP,SOAP)进行访问
微软(Windows Azure团队)刚刚发布了SQL SERVER的节点驱动程序。
据我所知,它没有npm yert的软件包,但它是开源的。并且也接受社区的贡献。
https://github.com/WindowsAzure/node-sqlserver
此处介绍博客文章:
如果您在.NET上运行,请查看entityspaces.js,我们将为Node.js创建一个完整的通用ORM,它将不需要WCF JSON服务... https://github.com/EntitySpaces/entityspaces.js
如果您正在使用MSFT后端技术,那么现在就可以使用它,但是,我们正在创建一个通用的Node.js ORM,并将很快获得更多信息。
Node.js SQL Server驱动程序似乎还很不成熟-杂乱无章的项目由不同的依赖项,性能和完整性级别组成,但都没有激发信心。
我建议使用edge-sql。这利用了.NET成熟的数据库驱动程序生态系统,并且仅依赖于.NET(如果您正在Windows上运行节点,那么就不费吹灰之力了-如果没有Mono,但我还没有尝试过)。
这是一个使用edge-sql的节点示例(server.js)(请注意,您需要根据edge-sql文档将连接字符串放入环境变量中):
var edge = require('edge');
// edge-sql has built in support for T-SQL / MSSQL Server
var getData = edge.func('sql', function () {/*
select top 10 * from sometable
*/
});
getData(null, function (error, result) {
if (error) throw error;
console.log(result);
});
截至2016年5月的状态如下。
官方的名为Node-sqlserver的Node的Microsoft SQL驱动程序多年未更新。
此节点上有一个名为node-sqlserver-v8的新叉子,可与Node Versions 0.12.x一起使用。和> =4.1.x。该fork还具有针对x64和x86目标的预编译二进制文件。
该软件包在NPM上以msnodesqlv8的形式提供。
我建议使用此软件包,因为它是轻量级的(没有依赖项),并且是唯一可与所有最新版本的SQL Server(包括SQL LocalDB)一起使用的软件包。
现在(2016年),您可以使用支持以下功能的Sequelize ORM:
根据其Github的星星,它被广泛使用。
该链接仅详细说明了sql 2000解决方案,而不详细说明sql 2005和sql 2008,并且该代码仅允许发送sql文本,并且不允许执行存储过程。
真正的解决方案是在Windows服务器上的linux服务器上或虚拟linux服务器上安装节点JS,然后转到Microsoft网站并下载JDBC Java驱动程序,然后在其中一个上安装这些microsoft ms sql java jdbc驱动程序。 linux服务器或linux虚拟服务器。