Windows 7 下 Node.js 鏈接 Oracle

1. 安裝 Oracle 11g express
  詳見: 《Windows 7 x64 安裝 Oracle 11g Express》 html

2. 安裝 Microsoft Visual Studio 2012 Express
   在 Microsoft 官網註冊並下載 Visual Studio 2012 Express for Windows Desktop, 運行安裝. node

3. 安裝 Node.js (當前最新版本爲v0.10.18)
   在 Node.js 官網下載 node-v0.10.18-x64.msi, 運行安裝.
sql

4. 安裝 node-oracle (當前最新版本爲 v0.3.4)
   經過 npm 來進行安裝, 參考網址: https://npmjs.org/package/oracle
shell

(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, 則 環境變量以下:
express

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 前面.  npm

(3). npm 安裝
Node.js 安裝完後, 會附帶安裝 npm, 在 cmd 窗口中執行如下命令便可安裝 node-oracle: windows

npm install oracle

或者使用 -g 命令安裝到 global 目錄中, windows7 下爲 "C:\Users\當前用戶\AppData\Roaming", 成功安裝後會顯示 node-oracle 的版本號及實際安裝到的目錄. 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).

相關文章
相關標籤/搜索