Windows上的Nodejs ODBC连接

时间:2012-11-21 08:50:55

标签: windows node.js odbc

我有一个非常适合Node.js的项目,但它必须连接到ODBC数据库,它必须在Windows上运行。我在linux上看到了nodejs的ODBC模块,但没有看到windows。有没有人对如何做到这一点有任何建议?

5 个答案:

答案 0 :(得分:4)

如果你像我一样从谷歌来到这里,因为你有旧的(即古老的)系统,我遇到了Is it possible to marry WSH (wscript) with nodejs并且被提醒了npm模块" win32ole" :https://www.npmjs.com/package/win32ole

虽然不仅仅是一个ODBC解决方案," win32ole"确实让你能够在风箱上做很多事情,就像旧的WSH一样。

var win32ole = require('win32ole');
. . .
// Create an ADODB.Connection Object
dbcon = new ActiveXObject('ADODB.Connection');

如果(像我一样),您在ODBC连接之后因为您正在连接到访问数据库,那么甚至可以使用Jet直接连接示例脚本:

https://github.com/idobatter/node-win32ole/blob/master/examples/access_mdb_sample.js

编辑:它确实需要一个node-gyp,一个需要构建本机代码的模块......

答案 1 :(得分:2)

与我们多年来在ADO.NET中提供的强大且高性能的数据库驱动程序相比,Windows上node.js的数据库驱动程序状态似乎有些不成熟。

我会认真考虑使用Edge来调用C#或CLR程序集进程来访问您的数据库。您可以在C#中编写Repository样式数据访问层,并从node.js中调用它。

我已经证明这适用于使用C#,PetaPoco(可选),.NET 4.5和Oracle ODP驱动程序(Oracle.DataAccess.dll)以及ADO.NET + SQL Server的开发环境。这应该适用于您可以在.NET中与之交谈的任何数据库。

调用.NET CLR函数的节点(server.js)示例:

var edge = require('edge');

// define CLR function proxy
var getData = edge.func({
    assemblyFile: '../Repositories/bin/Debug/Repositories.dll',
    typeName: 'Repositories.TestRepository',
    methodName: 'GetData' // This must be Func<object,Task<object>>
});

// call proxy function
getData({ myParam:1 }, function (error, result) {
    if (error) throw error;
    console.log(result);
});

GetData C#看起来像这样(请注意,您需要将连接字符串放在包含node.exe的文件夹中的node.exe.config中):

public async Task<object> GetData(object param)
    {
        using (var db = new Database("NameOfConnString"))
        {
            return db.Fetch<dynamic>("SELECT * FROM sometable");
        }
    }

或者,如果使用SQL Server,则可以使用edge-sql

使用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);
});

答案 2 :(得分:1)

我正在启动node.js,厌倦了csript.exe是主要原因。 它非常强大,非常令人印象深刻,花了我1小时才建立了一个完整功能的整个网格。好吧,我不是来推广node.js,我是noob就可以了。 然而,我发现一些非常有用的东西...... http://syskall.com/how-to-write-your-own-native-nodejs-extension/

因此,我不是重做C ++总会做得更好的事情,而是使用node.js和C ++来实现最高效率。

答案 3 :(得分:1)

node-odbc表示它是Linux的unixODBC,但它也适用于Windows,我在这里使用它。 它只是不包含二进制文件,因此您需要在安装node-odbc之前安装windows-build-tools和node-gyp才能构建二进制文件。

npm i -g windows-build-tools
npm i -g node-gyp
npm i odbc

答案 4 :(得分:-9)

NodeJS有一些潜力,但它仍然是一个玩具。前端程序员和后端程序员可以互换的想法是可笑的。但这不是主题......

Microsoft released他们自己的驱动程序。我没有尝试过,所以我不知道它们有多好。我想他们一定有点好,因为我在过去8个月里看到过NodeJS程序员的多个职位发布。 (也没有回应)。