[英]Node.js and Microsoft SQL Server
有什么方法可以让我的 Node.js 应用程序与 Microsoft SQL 通信? 我还没有在野外看到任何 MS SQL 驱动程序?
我正在将一个非常简单的应用程序放在一起,并且需要能够与现有的 MS SQL 数据库进行通信(否则我会使用 mongoDB 或 Redis)
原来的问题是旧的,现在使用节点MSSQL由@Patrik西梅克一个包装作为回答繁琐由@ Tracker1是最好的方式去作为回答。
已接受的答案中提到的Windows/Azure node-sqlserver 驱动程序要求您安装一个疯狂的先决条件列表:Visual C++ 2010、SQL Server Native Client 11.0、python 2.7.x 以及可能还有 Windows 7 SDK for 64-bit on your服务器。 如果你问我,你不想在你的 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);
}
这里是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);
});
});
我们刚刚发布了用于 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
你也许可以使用node-tds.js :
node.js 的 TDS 协议的一个令人兴奋的实现,允许与 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;");
(从另一个问题复制我的答案)。
我会推荐node-mssql ,它是其他连接器的一个很好的包装器,默认值是我之前的选择 ( Tedious ) 带来了更好的界面。 这是一个 JavaScript 实现,没有编译要求,这意味着您可以在 Windows 和非 Windows 环境中工作。
另一种选择,如果您不介意使用二进制网桥引入 .Net 或 Mono 将使用edge.js 。 如果您想利用 node.js 中的 .Net 库,这会非常好
node-tds被放弃, node-odbc不适用于 Windows,并且 MS node-sqlserver驱动程序似乎不适用于非 Windows(并且有一些愚蠢的要求)。
您可以使用另一个模块 - node-mssql 。 它使用其他 TDS 模块作为驱动程序,并提供易于使用的统一接口。 它还添加了额外的功能和错误修复。
额外功能:
TSQLFTW - T-SQL For The WIN(dows) - Fosco Marotto https://github.com/gfosco/tsqlftw
它是一个 C# 和 ADO .NET 托管代码解决方案,带有一个 C++ 包装器,Node.js 可以导入和使用它。
如果您了解 .NET,您可以尝试 WCF 数据服务(ADO.NET 数据服务); 编写用于数据访问的 WCF 应用程序并使用 odata(类固醇上的 REST)与数据库进行交互
如果您使用 SOA 并使用 SQL Server 2005,您可以查看 Microsoft SQL Server 2005 的 Native XML Web Services
http://msdn.microsoft.com/en-us/library/ms345123(v=sql.90).aspx
您可以将 SQL Server 作为 Web 服务(HTTP、SOAP)访问
Microsoft(Windows Azure 团队)刚刚发布了 SQL SERVER 的节点驱动程序。
据我所知,它没有用于 npm yert 的包,但它是开源的。 以及接受社区贡献。
https://github.com/WindowsAzure/node-sqlserver
介绍博客文章在这里:
我建议看看Prisma 。 我们刚刚(2020 年 10 月) 宣布了对 SQL Server 的预览版支持。
Prisma 是一个强调类型安全和开发人员体验的 ORM。 与通常将表映射到类的传统 ORM 不同,Prisma 将查询映射到类型(在 TypeScript 中)并从查询返回普通对象。
要开始使用 Prisma 和 SQL Server,请查看此示例并从文档中的从头开始指南。
如果您在 .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 的官方 Microsoft SQL 驱动程序,称为node-sqlserver ,已经很多年没有更新了。
这个名为node-sqlserver-v8的新分支适用于 Node 版本 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 文本,不允许执行存储过程。
真正的解决方案是在 linux 服务器上安装 node JS,或者在 windows 机器上的虚拟 linux 服务器上,然后去微软网站下载 JDBC java 驱动程序并安装那些 microsoft ms sql java jdbc 驱动程序。 linux服务器或linux虚拟服务器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.