使用Node.js在Windows上连接Oracle数据库

7

我正在尝试在Windows 7上从Node.js连接到Oracle数据库。这是可能的吗?我没有找到适用于Windows的Node.js插件可实现此功能。是否有任何推荐的解决办法?我猜想至少有其他一个想在Windows上使用Node.js并需要连接Oracle的人。如果必要,我可以接受简单的解决方案。感谢您的帮助。


一个简单的解决方法是使用C++ Oracle驱动程序,并将其作为C++扩展公开访问给节点。 - Raynos
你有关于这方面的推荐资源吗?我怀疑我必须要做类似的事情,但是我正在寻求指导。感谢您的评论。 - Matthew Crews
窃取类似项目的源代码。 - Raynos
我也处于类似的困境,你有进展吗? - Danny C
很抱歉,但我没有。最终我所做的是编写一个 Powershell 脚本从数据库中提取数据并将其转储到 CSV 文件中。然后我使用 NodeJS 将数据导入 MongoDB。很抱歉我没有更好的消息告诉你。 - Matthew Crews
5个回答

2

您是否需要直接从Node.js连接到Oracle?您可以使用另一种语言编写数据库事务,并通过Web服务将其暴露给Node.js。


理想情况下,我希望能够直接从Node.js连接到Oracle。如果这不可行,我想知道最简单的解决方法。我不确定用另一种语言编写事务会如何运作。如果有关于如何做到这一点的示例,我很乐意看到它。 - Matthew Crews
我认为最简单的解决方案是使用另一种拥有更多支持的语言创建数据提供程序。我将尝试编译本地模块,并发现这个链接是一个很好的起点:https://github.com/saary/node.net - Matthew Crews

1

与ADO.NET多年来提供的强大和高性能的数据库驱动程序相比,Windows上用于node.js的数据库驱动程序似乎还不够成熟。

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

我已经在开发环境中使用了C#,PetaPoco(可选),.NET 4.5和Oracle ODP驱动程序(Oracle.DataAccess.dll)证明了这一点。这也应该适用于任何您可以在.NET中访问的数据库。

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

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

获取数据的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");
    }
}

(请注意,Oracle.DataAccess.dll需要位于包含node.exe的文件夹中。)

1

1
你好,欢迎来到SO!请提供一些示例代码或详细说明您的答案:仅提供链接的答案往往会因为超链接失效而变得陈旧。您还能添加些什么内容来提供一些上下文吗? - Benny Bottema

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接