oracle windows server 2008,Node.js 在 Windows Server 2008 X64 连接Oracle 数据库
不需要安装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 数据库相关推荐
- Node.js 体验 — 当 Node.js 邂逅 Windows Azure
在本系列的第一篇文章中,我介绍了如何在Windows上运行Node.js.在第二篇文章中,我示范了如何在Node.js 中使用SQL Server.那也是我学习Node.js 的步骤,首先使它在win ...
- 解决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 ...
- windows完全卸载node.js
windows完全卸载node.js 找到对应的卸载程序rukou 找到对应的卸载程序rukou C:\ProgramData\Microsoft\Windows\Start Menu\Program ...
- 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 出现 ...
- Windows 7 下 Node.js 连接 Oracle
2019独角兽企业重金招聘Python工程师标准>>> 1. 安装 Oracle 11g express 详见: <Windows 7 x64 安装 Oracle 11g ...
- 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记
最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...
- 一、node.js的windows环境设置
第一次接触node.js的时候,还不能在window环境下运行,好不容易找到cygwin搭建了个运行环境,发现版本更新频繁不稳定,就没有耐心去看 最近工作刚忙完,又想起node.js,而且现在版本稳定 ...
- 如何在Windows系统搭建Node.js环境
概述 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动.非阻塞式I/O模型,使其轻量又高效.Node.js让JavaScript 运行在 ...
- Windows下安装node.js(npm) git+vue
Windows下安装git+node.js+npm+vue 放到统一大文件夹下 下载node.js http://nodejs.cn/ npm是随同NodeJS一起安装的包管理工具,能解决NodeJS ...
最新文章
- 微信表白墙 微信小程序 吐槽墙 表白墙 java 开发
- mysql实现树状查询_MySQL实现树状所有子节点查询的方法
- 谷歌 chrome 浏览器开发者工具打不开的解决方法
- 深入浅出设计模式_深入浅出设计模式03接口隔离原则
- android Math的使用
- HHT变换基本理论-学习笔记
- 调用oracle常用方法,区分Oracle和SQL Server常用函数调用方法
- conv2d的输入_pytorch1.0中torch.nn.Conv2d用法详解
- php 生存分析,HPA数据库08.做生存分析
- 化妆品包装新趋势|视觉模型样机包装模板,让你茅塞顿开
- showModalDialog模态对话框的使用以及浏览器兼容
- iOS AVPlayer播放模式的实现(随机播放 列表循环 单曲循环)
- 什么是维基百科?维基百科有什么用
- 微信小程序 + 腾讯位置服务获取全国城市列表
- GitHub消除马赛克项目
- BMS-Pro电池巡检综合监控系统
- 2019 HZNU Winter Training Day 14 Comprehensive Training
- 在线上也能进行商标注册
- GitHub的Java面试项目
- 虚拟化技术—基础(1)
热门文章
- Redis 快速搭建与使用
- Windows 创建符号链接
- vb中picturebox透明时看到下面的picturebox中图片
- malloc动态内存分配
- PyQt5树形结构控件QTreeWidget操作
- 自适应阈值算法(大津阈值法)
- 灰度值怎么降级_微服务生态的灰度发布如何实现?
- 差分放大电路差模共模公式_差分放大电路对差模信号和共模信号有什么影响?...
- gprs模块ftp 远程升级_基于GPRS无线通信技术的冷链监测系统
- mysql semisync 恢复_mysql半同步复制(semi_sync_replication)搭建及使用