原创作者: 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_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).

© 著作权归原创作者所有

Windows 7 下 Node.js 连接 Oracle的更多相关文章

  1. windows&lunix下node.js实现模板化生成word文件

    最近在做了一个小程序!里面有个功能就是根据用户提交的数据,自动生成一份word文档返回给用户.我也是第一次做这功能,大概思路就是先自己弄一份word模板,后台接受小程序发过来的数据,再根据这些数据将相 ...

  2. Windows 7下通过Excel2007连接Oracle数据库并对表查询

    http://blog.csdn.net/pan_tian/article/details/8133668 1. 环境变量的设置 1.1  ORACLE_HOME环境变量的设置,我这里指向了我的Ora ...

  3. Windows 7下Node.js Web开发环境搭建笔记

    Node.js是什么? 我们看看百科里怎么说的?JavaScript是一种运行在浏览器的脚本,它简单,轻巧,易于编辑,这种脚本通常用于浏览器的前端编程,但是一位开发者Ryan有一天发现这种前端式的脚本 ...

  4. Windows环境下Node.js环境搭建

    1.Node.js下载与安装 https://nodejs.org/zh-cn/download/ Windows现在windows安装包(.msi),现在后手动安装,安装目录无要求,选项默认即可 2 ...

  5. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

  6. Node.js连接MySQL数据库及构造JSON的正确姿势

    做一下整理,以前也很随意的引入包链接数据库,后来发现常常连接出问题,异常退出,后来使用在网上一个方法解决问题,网址由于书签丢失,抱歉不能引用了.再有就是简单的模块化下,使得目录合理点,再有就是说明一下 ...

  7. node.js连接MySQL操作及注意事项

    node.js作为服务端的js运行环境已经出现了有几年了,最近我有个朋友也在做这方面的开发,但是也是刚刚接触,遇到了很多坑.前几天他们在操作数据库的时候出现了点问题,后来我们一起看了看,其实都是nod ...

  8. 如何从Windows中删除Node.js

    如何从Windows中删除Node.js: 1.从卸载程序卸载程序和功能. 2.重新启动(或者您可能会从任务管理器中杀死所有与节点相关的进程). 3.寻找这些文件夹并删除它们(及其内容)(如果还有). ...

  9. Mongo副本集的配置以及php node.js连接使用副本集

    最近弄了下mongodb的副本集, 首先说下没有认证情况的副本集,相对比较简单,因为环境有限,我在同一台服务器上做了模拟. --rest参数是打开web监控页面,比如我们这里监听37017端口,则打开 ...

随机推荐

  1. Linux之IO Redirection

    一.引言 前几天使用一个linux下的内存检测工具valgrind,想要把检测的结果重定向到文件,结果总是没有任何内容,最后才发现是重定向的原因,它输出的信息是输出到stderr的,所以我使用 > ...

  2. 资源文件properties的存放路径

    参考这篇博客:http://lavasoft.blog.51cto.com/62575/184605 目前看来,大多数的做法是这样的: 比如a.properties需要被com.xxx.yyy这个包中 ...

  3. SIGBUS 和 SIGSEGV

    一.导致SIGSEGV      1.试图对仅仅读映射区域进行写操作 . 2.訪问的内存已经被释放,也就是已经不存在或者越界. 3.官方说法是: SIGSEGV --- Segment Fault. ...

  4. invalid comparison: java.util.ArrayList and java.lang.String——bug解决办法

    今天碰到个问题,解决了很久才搞定,来记录下,希望可以帮助到大家 贴错误源码: 这是一个根据list集合的查找数据的 sql,在接收list的时候加了判断 list != ‘ ’ “”,引起了集合与St ...

  5. 如何使用 PsExec 执行远程命令

    前言 这紧紧只是一篇纯技术分享.我们的程序在运行时需要连接多台目标机器,并拷贝目标机器上特定文件夹中的文件.为了方便访问,要在每台目标机器上建立一个特定用户,所以 PsExec 成了实现此功能的一个方 ...

  6. Python中如何将字符串作为变量名

    应用场景描述: 通过配置文件获取服务器上配置的服务名及运行端口号,编写python脚本检测服务上服务是否在运行? #!/usr/bin/env python # -*- coding:utf-8 -* ...

  7. 第二百零九节,jQuery EasyUI,Pagination(分页)组件

    jQuery EasyUI,Pagination(分页)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Pagination(分页)组件的使 ...

  8. asp.net网站防恶意刷新的Cookies与Session解决方法

    本文实例讲述了asp.net网站防恶意刷新的Cookies与Session解决方法,是WEB程序设计中非常实用的技巧.分享给大家供大家参考.具体实现方法如下: Session版实现方法: public ...

  9. 【ask】ghost分区还原win7出现蓝屏,试图加载CLASSPNP驱动时出现

    1.最近由于需要把整个c盘备份了,然后还原在另一台机器上. 2.结果当然时出事了,开始一切如旧,但是机器重启后,蓝屏了. 3.哦,开始立马觉得可能时因为有些软件的驱动是装载d盘了. 4.赶紧把d盘也备 ...

  10. JDK动态代理具体解释

    首先说一下动态代理和静态代理的差别: 静态代理:是预先写好或由特定工具自己主动生成的代码.再对其编译.在程序执行前.代理类的.class文件就已经存在了. 动态代理:代理是在程序执行时,运用反射机制动 ...