https://www.cnblogs.com/rysinal/p/7779055.html

导读

  • linux下安装使用

    • gcc安装
    • nodejs安装
    • oracle客户端安装
    • npm安装oracledb测试连接
    • 错误说明
  • windows下安装使用

    • 同上结构

Linux下安装使用

一、安装需要GCC 4.7(或更高版本)

因为编译node 4(或更高版本)需要C++ 11兼容的编译器。Linux 6和RHEL 6上的默认编译器不具备所需的C++ 11支持。安装GCC 4.7或更高版本或升级到Linux 7。(点击查看官方安装c++ 11教程)或者参考 CentOS yum升级GCC到4.8 教程。

注:安装后验证版本:

gcc --version

二、安装nodejs

以6.9.4版本为例安装(根据版本参考即可)

cd /opt
tar -Jxf node-v6.9.4-linux-x64.tar.xz

设置Node.js 环境变量:

export PATH=/opt/node-v6.9.4-linux-x64/bin:$PATH

查看node版本

node -v
//保证npm版本最新
npm i -g npm to update

三、安装oracle客户端 'Basic' 和 'SDK'  zip包

1. 进入 官方下载地址,下载以下两个包,并安装在同一个目录(官方下载各种验证,这里提供百度云盘下载链接)

以本机测试为例,我的安装位置(可自定义)为 /opt/oracle

cd /opt/oracle
unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip
mv instantclient_12_2 instantclient
cd instantclient
ln -s libclntsh.so.12.1 libclntsh.so

设置环境变量

//把以下环境变量添加至当前环境变量文件下
export LD_LIBRARY_PATH=/opt/oracle/instantclient:$LD_LIBRARY_PATH
export OCI_LIB_DIR=/opt/oracle/instantclient
export OCI_INC_DIR=/opt/oracle/instantclient/sdk/include

四、安装oracledb 测试

安装oracle库:

npm install oracledb

输出:

> oracledb@1.13.1 install /opt/oracletest/node_modules/oracledb
> node-gyp rebuild

make: Entering directory `/opt/oracletest/node_modules/oracledb/build'
CXX(target) Release/obj.target/oracledb/src/njs/src/njsOracle.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsPool.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsConnection.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsResultSet.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsMessages.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsIntLob.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiEnv.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiEnvImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiException.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiExceptionImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiConnImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiDateTimeArrayImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiPoolImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiStmtImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiUtils.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiLob.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiCommon.o
SOLINK_MODULE(target) Release/obj.target/oracledb.node
COPY Release/oracledb.node
make: Leaving directory `/opt/oracletest/node_modules/oracledb/build'
npm WARN saveError ENOENT: no such file or directory, open '/opt/oracletest/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/opt/oracletest/package.json'
npm WARN oracletest No description
npm WARN oracletest No repository field.
npm WARN oracletest No README data
npm WARN oracletest No license field.

+ oracledb@1.13.1
added 2 packages in 42.994s

在当前目录新建app.js测试连接:

var oracledb = require('oracledb');
var config = {
user:'******',  //用户名
password:'******',  //密码
//IP:数据库IP地址,PORT:数据库端口,SCHEMA:数据库名称
connectString : "IP:PORT/SCHEMA"
};
oracledb.getConnection(
config,
function(err, connection)
{
if (err) {
console.error(err.message);
return;
}
  //查询某表十条数据测试,注意替换你的表名
connection.execute("SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM 你的表名) A WHERE ROWNUM <= 10 ) WHERE RN >= 0",
function(err, result)
{
if (err) {
console.error(err.message);
doRelease(connection);
return;
}
//打印返回的表结构
console.log(result.metaData);
//打印返回的行数据
console.log(result.rows);
});
}); function doRelease(connection)
{
connection.close(
function(err) {
if (err) {
console.error(err.message);
}
});
}

执行:

node app.js

执行后报错:

ORA-24454: client host name is not set

这里需要设置主机名到 /etc/hosts

$ sudo /bin/bash -c "echo '127.0.1.1 ${HOSTNAME}' >> /etc/hosts"

设置后重新执行 node app.js 返回打印结果成功。

如果pm2管理项目时报错:Error: NJS-045: cannot load the oracledb add-on binary for Node.js **** (linux, x64)

请记得pm2 restart *** --update-env 来更新环境变量

参考 https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instzip

Windows下安装使用

一、安装c++ 编译环境

这里是下载的 Visual Studio Express 2013 for Windows Desktop

1.官方下载

(由于下载过于麻烦,可以通过这里提供的 百度云盘下载 安装文件 cn_visual_studio_express_2012_for_windows_desktop_x86_web_installer_1001992.exe)

找到Visual Studio Express 2012 for Windows Desktop 并点击右上角 下载  按钮 开始下载

下载完安装文件 cn_visual_studio_express_2012_for_windows_desktop_x86_web_installer_1001992.exe 并点击安装

二、安装 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;

1.官方下载地址(由于官方下载权限和网络问题,这里同样提供 百度云下载 地址。)

下载完成后把它们解压到 D:\db\oracle\instantclient_12_2 文件夹中(可自定义目录), 由于两个 zip 中的文件各不相同, 所以合并到同一个文件夹也不会发生覆盖.

Windows环境变量设置

系统环境变量新增以下3个:

OCI_LIB_DIR=D:\db\oracle\instantclient_12_2\sdk\lib\msvc
OCI_INC_DIR=D:\db\oracle\instantclient_12_2\sdk\include
OCI_VERSION=12 path环境变量 里加上 以下两个,注意先后顺序

三、安装nodejs(省略,nodejs.org 下载msi安装包安装)

这里需要注意 npm版本保证最新即可

下面是npm升级命令:

npm i -g npm

四、安装oracledb 测试

npm install oracledb

代码测试如同linux下方式,请参考上面linux安装 第四章内容。

如果安装oracledb包不成功,请尝试重启电脑试一试(亲测)。

nodejs 使用官方oracledb库连接数据库 教程的更多相关文章

  1. openGL官方Glut库配置教程

    在配置前要先安装好Visual Stdio环境 官方下载网站 注:一台Windows操作系统中可以存在多版本的Visual Stdio,多个版本之间互不干扰但不共享插件库,且高版本向下兼容,因此笔者更 ...

  2. Python 数据处理库pandas教程(最后附上pandas_datareader使用实例)

    0 简单介绍 pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有 ...

  3. 六轴加速度传感器MPU6050官方DMP库到瑞萨RL78/G13的移植

    2015年的电赛已经结束了.赛前接到器件清单的时候,看到带防护圈的多旋翼飞行器赫然在列,又给了一个瑞萨RL78/G13的MCU,于是自然联想到13年的电赛,觉得多半是拿RL78/G13做四旋翼的主控, ...

  4. Altium Designer 6三维元件库建模教程

    一.AD6.9 PCB编辑环境下如何使用STEP模型的方法. 在PCB 封装库中添加对应的3D模型,然后选择update pcb 即可 方法:在PCB library 页面,点击place -- 3d ...

  5. Alamofire网络库进阶教程

    本章节由CocoaChina翻译组成员星夜暮晨(博客)翻译自raywenderlich:Intermediate Alamofire Tutorial,敬请勘误. 欢迎回到我们的 Alamofire ...

  6. Apple官方IOS开发入门教程[v0.2]

    今天,又跑去找IOS开发入门教程了,结果发现没什么好的PDF. 后来发现,原来苹果官方有开发入门教程,而且写的很好.所以整理出来了,给大家分享一下. 我就不在这里贴pdf的内容了,下面有苹果官方教程的 ...

  7. 【Qt官方MQTT库的使用,附一个MqttClient例子】

    Qt官方MQTT库的使用,附一个MqttClient例子 开发环境:win7 64 + Qt5.9 记录时间:2018年3月11日 00:48:42 联系邮箱: yexiaopeng1992@126. ...

  8. REST API TO MiniProgram 上线WordPress官方插件库

    全新开发的用于 wordpress微信小程序的插件 REST API TO MiniProgram今天上线WordPress官方插件库.这个插件的上一个版本叫:wp-rest-api-for-app, ...

  9. 基于STM32F4移植W5500官方驱动库ioLibrary_Driver(转)

    源: 基于STM32F4移植W5500官方驱动库ioLibrary_Driver 参考: 基于STM32+W5500 的Ethernet和Internet移植 Upgrade W5500 Throug ...

随机推荐

  1. Centos6、7下安装Nginx的两种方法

    一,通过yum命令安装 1.操作系统版本的确认很重要,因为下一步我们要依靠这个来创建yum源文件 2.创建 nginx.repo vi /etc/yum.repos.d/nginx.repo 文件内容 ...

  2. (7/24) 插件配置之html文件的打包发布

    从前面几节到现在,其实我们的项目结构是有问题的,因为我们直接把index.html文件放到了dist文件夹目录下.这肯定是不正确的,应该放到我们src目录下,然后打包到dist目录下,前面为了学习,才 ...

  3. HTTPS 基本流程 转载 https://zhuanlan.zhihu.com/p/27395037

    协议 1.HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 . 2.HTTPS 协议(HyperTe ...

  4. makefile中打印变量名字,方便调试

    $(warning $(DVD_SERVICE)) // DVD_SerVICE是Makefile中的变量 $(warning   ST40_IMPORTS is $(ST40_IMPORTS)) 变 ...

  5. 2019“嘉韦思杯”3.30初赛一部分Write Up

    同学们TQL.佩服李长兴同学的超神瓜皮思维. 一.飞虎队(希尔密码) 本题是我今天大部分时间的花费处.先百度学习了希尔密码,然后尝试手动计算逆矩阵和矩阵乘法,还求助于线性代数课本,可谓苦不堪言. 做题 ...

  6. 嵌入式linux——点亮led灯(二)

    刚才在jz2440板子上写了一个点亮中间led的程序,前前后后十几分钟才好.最终代码 本节内容: 1. 汇编点灯 2. C点灯 3. 参数选择点灯 4. 按键点灯 1. 汇编点灯 .text .glo ...

  7. python 之修饰器

    from functools import update_wrapper def debug(func): def wrapper(): print "[DEBUG]: enter {}() ...

  8. 关于C#关闭窗体后,依旧有后台进程在运行的解决方法

    http://www.cnblogs.com/HappyEDay/p/5713707.html 这里粘贴原文权当备份了. C#中WinForm程序退出方法技巧总结 一.关闭窗体 在c#中退出WinFo ...

  9. DO,DTO和VO的使用

    DO,DTO和VO的使用 DO:对应数据库表结构 VO:一般用于前端展示使用 DTO:用于数据传递.(接口入参和接口返回值都可以) 以ssm框架为例: controller层: public List ...

  10. P1461 海明码 Hamming Codes

    题目描述 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个单位 ...