17

我想知道是否有人知道从 Node.js 连接到 Microsoft SQL 数据库的方法。我知道 MySQL 驱动程序,但我有需要从 MS SQL 数据库中提取的数据,我宁愿直接从 Node.js 中提取数据,也不愿破解某种 PHP 脚本。

4

7 回答 7

10

查看一个新选项:

https://github.com/ornmazor/node-tds

(来自Node.js 和 Microsoft SQL Server

于 2011-03-02T01:52:01.953 回答
8

我怀疑您必须使用 JSON 输出 Web 服务来包装您的 SQL Server。从积极的方面来说,它应该相对容易做到。

如果 node.js 中的 JavaScript 引擎可以做到这一点,那就太好了:(来自如何从浏览器中的 JavaScript 连接到 SQL Server 数据库?):

var connection = new ActiveXObject("ADODB.Connection") ;

var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB";

connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");

rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
   document.write(rs.fields(1));
   rs.movenext;
}

rs.close;
connection.close;
于 2011-01-18T20:51:20.190 回答
7

我会推荐node-mssql,它是其他连接器的一个很好的包装器,默认是我之前的选择(Tedious),它带来了更好的界面。这是一个 JavaScript 实现,没有编译要求,这意味着您可以在 Windows 和非 Windows 环境中工作。

另一种选择是,如果您不介意引入带有二进制桥的 .Net 或 Mono,则可以使用edge.js。如果您想利用 node.js 中的 .Net 库,这会非常好

node-tds已被废弃,node-odbc不适用于 Windows,MS node-sqlserver驱动程序似乎不适用于非 Windows(并且有一些愚蠢的要求)。

于 2012-12-04T22:18:42.863 回答
4

如果您从 linux 连接到 Mssql,您可以将 node-odbc ( https://github.com/w1nk/node-odbc ) 与 freetds odbc 驱动程序一起使用。我在生产中使用它,它比包装 Web 服务更快。

于 2011-11-25T15:17:41.257 回答
2

甚至来自微软的另一种选择,

http://www.microsoft.com/en-us/download/details.aspx?id=29995

或通过 odbc 的 linux sql 客户端驱动程序:

http://www.microsoft.com/en-us/download/details.aspx?id=28160

于 2012-08-08T16:29:45.913 回答
2

2015 年的新答案:ORM 包Sequelize现在支持 MS SQL,在后台使用繁琐的驱动程序。

这是我发现与 Microsoft SQL Server 交互的最佳方式。

于 2015-09-24T15:18:24.487 回答
0

我最近遇到了这个问题,我试图连接托管在远程服务器上的 MSSQL。我必须使用的配置是-

let config = {
    user: 'user',
    password: 'password',
    server: 'server',
    database: 'database',
    "options":{
        instanceName: 'instanceName',
        "encrypt":true,
        "enableArithAbort":true,
        "trustServerCertificate": true,
       }
};
module.exports=config;

要获取实例名称,请在 SSMS 中使用 SELECT @@servicename

于 2021-07-27T14:54:39.113 回答