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

问题描述:

我想从Windows 7中的Node.js连接到Oracle数据库。这可能吗?我还没有找到Node.js的插件,它可以为Windows做到这一点。有没有推荐的解决方法呢?我猜测至少有一个人希望在Windows上使用Node.js并需要连接到Oracle。如果这是必要的,我愿意接受简单的解决方法。谢谢您的帮助。使用Node.js连接到Oracle数据库Windows

+0

一个简单的解决办法是使用C++ Oracle驱动程序并暴露访问。它作为一个C++扩展到节点 – Raynos 2012-04-04 19:19:27

+0

你有推荐的资源吗?我怀疑我必须这样做,但我正在寻找指导。感谢您的评论。 – 2012-04-04 19:25:08

+0

窃取[类似项目]的源代码(https://github.com/gfosco/tsqlftw) – Raynos 2012-04-04 19:27:00

你需要直接从Node.js连接到oracle吗?您可以用另一种语言编写数据库事务,并通过Web服务将它们展示给Node.js。

+0

理想情况下,我会直接从Node.js连接到Oracle。如果这不可行,我想知道最简单的解决方法。我不确定如何用另一种语言编写交易会起作用。如果有关于如何做到这一点的例子,我很乐意看到它。 – 2012-04-05 04:40:21

+0

我认为最简单的解决方案是使用另一种具有更多支持的语言来创建数据提供者。我将尝试编译一个本地模块,并发现这个链接是一个很好的起点:https://github.com/saary/node.net – 2012-04-05 13:52:05

http://github.com/mariano/node-db-oracle该项目旨在增加甲骨文支持的NodeJS

编辑: 现在有一间办公室的NodeJS驱动程序用于Oracle,由Oracle称为节点甲骨文

https://blogs.oracle.com/opal/entry/introducing_node_oracledb_a_node

+1

不适用于窗口不幸 – 2012-04-16 19:37:43

此驱动程序适用于Window:https://npmjs.org/package/oracle

与此处类似的问题Stack Overflow: Connect Node.js with Oracle on Windows platform

有甲骨文作出了司机OracleDB的http://www.oracle.com/technetwork/database/database-technologies/node_js/oracle-node-js-2399407.html

UPDATE: 甲骨文已经发布了GIT一个node-oracledb驱动程序,将允许应用程序的NodeJS连接到Oracle数据库上的窗口。

+1

嗨,欢迎来到SO!请提供一些示例代码或详细说明您的答案:链接式答案在超链接死亡时往往变得陈旧。还有什么可以添加到你的答案来提供一些上下文? – 2015-06-12 18:56:19

Windows上的node.js的数据库驱动程序的状态似乎有些不成熟,这与我们在ADO.NET中可用的稳健且高性能的数据库驱动程序相比已有多年。

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

我已经证明这个工作在C#,PetaPoco(可选),.NET 4.5和Oracle ODP驱动程序(Oracle.DataAccess.dll)的开发环境中。这也适用于任何你可以在.NET中使用的数据库。

节点(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); 
}); 

的GetData C#看起来是这样的(注意,你需要把你的连接字符串中node.exe.config包含的文件夹中node.exe):

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的文件夹中)