不需要安装Oralce客户端,不影响其它使用Oracle客户端的程序运行

安装Node.JS

node-v12.13.0-x64.msi

安装VC++ 2013运行时

vcredist_x64.exe

运行的版本要与Oracle 客户端匹配,

下载Oracle 客户端

instantclient-basiclite-windows.x64-18.5.0.0.0dbru.zip

解压并放到一个目录下:

C:\instantclient_18_5

写个Run.bat

REM mynode.bat

SET PATH=C:\instantclient_18_5;%PATH%

node dist/index.js

附源码

import oracledb from 'oracledb'

import http from 'http'

import urllib from 'url'

import _ from 'lodash'

let md5 = require('md5-node')

const oraConfig = {

connectString :'192.168.*.*:1521/orcl',

user: '****', // 登录oracle的用户名

password: '***' // 请换为实际密码

}

function doRelease (connection:oracledb.Connection) {

connection.close(

function (err) {

if (err) {

console.error(err.message)

}

})

}

var server:http.Server = http.createServer();

server.on('request', async (request, response)=>{

console.log('收到客户端的请求了,请求路径是:' + request.url);

let urlObj = urllib.parse(request.url, true);

if (urlObj.pathname === '/SyncDeviceConfig')

{

response.writeHead(200, { 'Content-Type': 'application/json;charset:utf-8' });

let jsoObj = await GetDeviceConfig(urlObj.query.version_code as string).catch((err)=>{

response.writeHead(406, err.message);

response.end(err);

return;

});

response.end(JSON.stringify(jsoObj));

}

else{

response.writeHead(404, { 'Content-Type': 'text/html' });

response.end('404 Not Found.')

}

});

server.listen(3000, ()=>{

console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问')

})

async function GetDeviceConfig(OldVersionCode :string){

let connection:any;

connection = await oracledb.getConnection(oraConfig)

.catch(err=>{

console.error(err)

throw(err)

});

try

{

let SQL = "select ****";

const V3006 = (await connection.execute(SQL)).rows[0][0];

SQL = "select ****"

const V3007 = (await connection.execute(SQL)).rows[0][0];

SQL = "select *****"

const V3011 = (await connection.execute(SQL)).rows[0][0];

SQL = "select ****"

const V1040 = await connection.execute(SQL);

const mOrgCode = md5(`{"3006":${V3006}, "3007":${V3007}, "1040":[${_.join(V1040.rows.map((m:any)=>`{"NODEID":"${m[0]}","VERSION":${m[1]}}`))}]}`);

if (OldVersionCode === mOrgCode){

throw('already is new vesion!')

}

let jsonObj = {

version_code: mOrgCode,

publishTime : Date.now().toString(),

lines:Array()

};

SQL = `*****`;

let dtLine = await connection.execute(SQL)

jsonObj.lines = dtLine.rows.map( (drLine:any) =>({

lineID:drLine[0], lineName:drLine[2]

}))

for(let lineNode of jsonObj.lines){

lineNode.stations = await FillLineStations(connection, lineNode.lineID)

}

return jsonObj;

}catch(err){

console.error(err);

throw (err)

}finally {

if (connection) {

try {

await connection.close();

} catch (err) {

console.error(err);

}

}

}

}

let FillLineStations = async (connection:oracledb.Connection, LineID:string) =>{

const SQL = `******`;

let dbStations = await connection.execute(SQL)

let r = dbStations.rows?.map((drStation:any)=>({

Node:drStation[0], StationName:drStation[1], IP:drStation[2], Port:drStation[3],

devices:Array.of()

}));

if(r)

{

for(let StationNode of r){

StationNode.devices = await FillStationDevices(connection, StationNode.Node)

}

}

return r;

}

let FillStationDevices = async (connection:any, StationNodeID:string)=>{

const SQL1040 = `*******`;

const V1040 = (await connection.execute(SQL1040, [StationNodeID], { maxRows: 1 } ));

if (V1040 == null || V1040.rows === null || V1040.rows?.length === 0 )

return []

let iv1040 = V1040.rows[0][0];

const SQL_DEVICE = `******`;

let devices = (await connection.execute(SQL_DEVICE))

if (devices.rows)

return devices.rows.map((drDevcie:any)=>({

DeviceCode:drDevcie[4], Node:drDevcie[0], DeviceType:_.trim(drDevcie[1]),IP:drDevcie[2], OS:'', Port:_.toNumber(drDevcie[3])

}))

else

return []

}

oracle windows server 2008,Node.js 在 Windows Server 2008 X64 连接Oracle 数据库相关推荐

  1. Node.js 体验 — 当 Node.js 邂逅 Windows Azure

    在本系列的第一篇文章中,我介绍了如何在Windows上运行Node.js.在第二篇文章中,我示范了如何在Node.js 中使用SQL Server.那也是我学习Node.js 的步骤,首先使它在win ...

  2. 解决Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 14.x

    今天在新的开发环境检出nodejs的前端项目,运行npm run serve启动项目后报: > Node Sass could not find a binding for your curre ...

  3. windows完全卸载node.js

    windows完全卸载node.js 找到对应的卸载程序rukou 找到对应的卸载程序rukou C:\ProgramData\Microsoft\Windows\Start Menu\Program ...

  4. Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js

    > Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 出现 ...

  5. Windows 7 下 Node.js 连接 Oracle

    2019独角兽企业重金招聘Python工程师标准>>> 1. 安装 Oracle 11g express   详见: <Windows 7 x64 安装 Oracle 11g ...

  6. 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记

    最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...

  7. 一、node.js的windows环境设置

    第一次接触node.js的时候,还不能在window环境下运行,好不容易找到cygwin搭建了个运行环境,发现版本更新频繁不稳定,就没有耐心去看 最近工作刚忙完,又想起node.js,而且现在版本稳定 ...

  8. 如何在Windows系统搭建Node.js环境

    概述         Node.js是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动.非阻塞式I/O模型,使其轻量又高效.Node.js让JavaScript 运行在 ...

  9. Windows下安装node.js(npm) git+vue

    Windows下安装git+node.js+npm+vue 放到统一大文件夹下 下载node.js http://nodejs.cn/ npm是随同NodeJS一起安装的包管理工具,能解决NodeJS ...

最新文章

  1. 微信表白墙 微信小程序 吐槽墙 表白墙 java 开发
  2. mysql实现树状查询_MySQL实现树状所有子节点查询的方法
  3. 谷歌 chrome 浏览器开发者工具打不开的解决方法
  4. 深入浅出设计模式_深入浅出设计模式03接口隔离原则
  5. android Math的使用
  6. HHT变换基本理论-学习笔记
  7. 调用oracle常用方法,区分Oracle和SQL Server常用函数调用方法
  8. conv2d的输入_pytorch1.0中torch.nn.Conv2d用法详解
  9. php 生存分析,HPA数据库08.做生存分析
  10. 化妆品包装新趋势|视觉模型样机包装模板,让你茅塞顿开
  11. showModalDialog模态对话框的使用以及浏览器兼容
  12. iOS AVPlayer播放模式的实现(随机播放 列表循环 单曲循环)
  13. 什么是维基百科?维基百科有什么用
  14. 微信小程序 + 腾讯位置服务获取全国城市列表
  15. GitHub消除马赛克项目
  16. BMS-Pro电池巡检综合监控系统
  17. 2019 HZNU Winter Training Day 14 Comprehensive Training
  18. 在线上也能进行商标注册
  19. GitHub的Java面试项目
  20. 虚拟化技术—基础(1)

热门文章

  1. Redis 快速搭建与使用
  2. Windows 创建符号链接
  3. vb中picturebox透明时看到下面的picturebox中图片
  4. malloc动态内存分配
  5. PyQt5树形结构控件QTreeWidget操作
  6. 自适应阈值算法(大津阈值法)
  7. 灰度值怎么降级_微服务生态的灰度发布如何实现?
  8. 差分放大电路差模共模公式_差分放大电路对差模信号和共模信号有什么影响?...
  9. gprs模块ftp 远程升级_基于GPRS无线通信技术的冷链监测系统
  10. mysql semisync 恢复_mysql半同步复制(semi_sync_replication)搭建及使用