• Windows 7 下 Node.js 连接 Oracle


    原创作者: sailtseng

    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_1sdkinclude
    OCI_LIB_DIR=C:instantclient_12_1sdklibmsvcvc11
    OCI_VERSION=12 
    Path=...;c:instantclient_12_1vc11;c:instantclient_12_1

    注意: 对于(1)中下载的两个 zip 文件, OCI_VERSION 应设置为 12, 如果按原文设置成 11, 则安装时会报错:  LINK : fatal error LNK1181: cannot open input file 'C:instantclient_12_1sdklibmsvcvc11oraocci11.lib' ;
    请确保 Path 中 c:instantclient_12_1vc11 在 c:instantclient_12_1 前面. 

    (3). npm 安装
    Node.js 安装完后, 会附带安装 npm, 在 cmd 窗口中执行以下命令即可安装 node-oracle:

    npm install oracle

    或者使用 -g 命令安装到 global 目录中, windows7 下为 "C:Users当前用户AppDataRoaming", 成功安装后会显示 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:TEMPselect.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:TEMPinsert.js 及 node C:TEMPselect.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:TEMPdelete.js 及 node C:TEMPselect.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:TEMPupdate.js 及 node C:TEMPselect.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:TEMPddl.js 及 node C:TEMPselect.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).

  • 相关阅读:
    ①---Java开发环境配置
    1.java的基础和数据类型
    0、原生jdbc工厂类
    spring中使用quartz动态添加定时任务执行sql
    app前端代码打包步骤
    less的解析笔记
    转:玩转HTML5移动页面(动效篇)
    HTML5属性备忘单
    玩转git和github
    js基础----数组
  • 原文地址:https://www.cnblogs.com/momoyan/p/9128025.html
Copyright © 2020-2023  润新知