windows环境下node.js连接oracle数据库可以实现吗

 我来答
龙氏风采
2016-12-27 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12817
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
  1. 安装 Oracle 11g express
  详见: 《Windows 7 x64 安装 Oracle 11g Express》
  2. 安装 Microsoft Visual Studio 2012 Express
  在 Microsoft 官网注册并下载 Visual Studio 2012 Express for Windows Desktop, 运行安装.
  3. 安装 Node.js (当前最新版本为v0.10.18)
  在 Node.js 官网下载 node-v0.10.18-x64.msi, 运行安装.
  4. 安装 node-oracle (当前最新版本为 v0.3.4)
  通过 npm 来进行安装, 参考网址: https//npmjs.org/package/oracle
  (1). 安装 Oracle instant client
  这是 Oracle 提供的访问数据库的 C++接口, windows 64位在这里下载 Version 12.1.0.1.0 中的 instantclient-basic-windows.x64-12.1.0.1.0.zip和instantclient-sdk-windows.x64-12.1.0.1.0.zip; 并把它们解压到 C:\instantclient_12_1 文件夹中, 由于两个 zip 中的文件各不相同, 所以合并到同一个文件夹也不会发生覆盖.
  (2). 设置系统环境变量
  右键"我的电脑" → Properties → Advanced system settings → Environment Variables → System variables → New...
  如果安装了 Visutal Studio 2012, 则 环境变量如下:
  OCI_INCLUDE_DIR=C:\instantclient_12_1\sdk\include
  OCI_LIB_DIR=C:\instantclient_12_1\sdk\lib\msvc\vc11
  OCI_VERSION=12
  Path=...;c:\instantclient_12_1\vc11;c:\instantclient_12_1
  注意: 对于(1)中下载的两个 zip 文件, OCI_VERSION 应设置为 12, 如果按原文设置成 11, 则安装时会报错: LINK : fatal error LNK1181: cannot open input file 'C:\instantclient_12_1\sdk\lib\msvc\vc11\oraocci11.lib' ;
  请确保 Path 中 c:\instantclient_12_1\vc11 在 c:\instantclient_12_1 前面.
  (3). npm 安装
  Node.js 安装完后, 会附带安装 npm, 在 cmd 窗口中执行以下命令即可安装 node-oracle:
  npm install oracle
  或者使用 -g 命令安装到 global 目录中, windows7 下为 "C:\Users\当前用户\AppData\Roaming", 成功安装后会显示 node-oracle 的版本号及实际安装到的目录.
  如果在需要使用代理进行安装, 则使用以下命令:
  npm install oracle --proxy http://proxy_server:port
  5. 测试 Node.js 连接 Oracle
  (1). 在 oracle 中创建 NODE_TEST 表并添加数据.
  CREATE TABLE NODE_TEST
  (
  A INTEGER,
  B INTEGER
  );
  INSERT INTO NODE_TEST(A, B) VALUES (1, 2);
  INSERT INTO NODE_TEST(A, B) VALUES (3, 4);
  (2). 在 C:\TEMP 目录下添加 select.js.
  var oracle = require('node-oracle 安装目录');
  var connectData = {"hostname": "localhost", "database": "XE" ,
  "user": "用户名", "password": "密码"};
  oracle.connect(connectData, function(err, connection) {
  if ( err ) {
  console.log(err);
  } else {
  connection.execute("SELECT * FROM NODE_TEST", [], function(err, results) {
  if ( err ) {
  console.log(err);
  } else {
  console.log(results);
  }
  connection.close();
  });
  }
  });
  (3). 在 cmd 中执行 node C:\TEMP\select.js, 成功检索出数据.
  6. 测试 Node.js 对 Oracle 的增/删/改/查/DDL
  (1). INSERT: 在 C:\TEMP 目录下添加 insert.js
  var oracle = require('node-oracle 安装目录');
  var connectData = {"hostname": "localhost", "database": "XE" ,
  "user": "用户名", "password": "密码"};
  oracle.connect(connectData, function(err, connection) {
  if ( err ) {
  console.log(err);
  } else {
  connection.execute(" INSERT INTO NODE_TEST (A, B) " +
  " VALUES (:1, :2) RETURNING A INTO :3 ",
  ['5', '6', new oracle.OutParam()],
  function(err, results) {
  if ( err ) {
  console.log(err)
  } else {
  console.log(results);
  }
  connection.close();
  }
  );
  }
  });
  在 cmd 中执行 node C:\TEMP\insert.js 及 node C:\TEMP\select.js, 成功插入数据.
  (2). DELETE: 在 C:\TEMP 目录下添加 delete.js
  var oracle = require('node-oracle 安装目录');
  var connectData = {"hostname": "localhost", "database": "XE" ,
  "user": "用户名", "password": "密码"};
  oracle.connect(connectData, function(err, connection) {
  if ( err ) {
  console.log(err);
  } else {
  connection.execute("DELETE FROM NODE_TEST WHERE A = :1",
  [5],
  function(err, results) {
  if ( err ) {
  console.log(err);
  } else {
  console.log(results);
  }
  connection.close();
  });
  }
  });
  在 cmd 中执行 node C:\TEMP\delete.js 及 node C:\TEMP\select.js, 成功删除数据.
  (3). UPDATE: 在 C:\TEMP 目录下添加 update.js
  var oracle = require('node-oracle 安装目录');
  var connectData = {"hostname": "localhost", "database": "XE" ,
  "user": "用户名", "password": "密码"};
  oracle.connect(connectData, function(err, connection) {
  if ( err ) {
  console.log(err);
  } else {
  connection.execute("UPDATE NODE_TEST SET B = :1 WHERE A = :2",
  [8, 3],
  function(err, results) {
  if ( err ) {
  console.log(err);
  } else {
  console.log(results);
  }
  connection.close();
  });
  }
  });
  在 cmd 中执行 node C:\TEMP\update.js 及 node C:\TEMP\select.js, 成功修改数据.
  (4). DDL: 在 C:\TEMP 目录下添加 ddl.js
  var oracle = require('node-oracle 安装目录');
  var connectData = {"hostname": "localhost", "database": "XE" ,
  "user": "用户名", "password": "密码"};
  oracle.connect(connectData, function(err, connection) {
  if ( err ) {
  console.log(err);
  } else {
  connection.execute("ALTER TABLE NODE_TEST ADD (C INT)",
  [],
  function(err, results) {
  if ( err ) {
  console.log(err);
  } else {
  console.log(results);
  }
  connection.close();
  });
  }
  });
  在 cmd 中执行 node C:\TEMP\ddl.js 及 node C:\TEMP\select.js, 成功添加列C.
  7. 开发环境
  Windows 7 Enterprise(64-bit) + Microsoft Visual Studio 2012 Express +
  Oracle Database Express Edition 11g Release 2 for Windows x32 +
  Instant Client for Microsoft Windows (x64)(version 12.1.0.1.0) +
  Node.js(v0.10.18) + node-oracle(v0.3.4).
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式