crossplatform---Nodejs in Visual Studio Code 07.学习Oracle
1.开始
Node.js:https://nodejs.org
OracleDB: https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instwin
https://github.com/oracle/node-oracledb/blob/master/doc/api.md#resultsethandling
2.OracleDB安装
下载安装即可,略
- C Compiler with support for C++ 11 (Xcode, gcc, Visual Studio or similar)
打开Visual Studio的安装文件,查看C编译器是否安装,见下图

- The small, free Oracle Instant Client "basic" and "SDK" packages if your database is remote. Or use a locally installed database such as the free Oracle XE release
打开Oracle Instant Client,免费下载basic和sdk两个压缩包,绿色软件无须安装
instantclient-basic-windows.x64-12.1.0.2.0.zip 69MB
instantclient-sdk-windows.x64-12.1.0.2.0.zip 2.62MB

将两个ZIP文件解压到同一个目录中Z:\Softs\OracleClient\12GX64

- Set
OCI_LIB_DIRandOCI_INC_DIRduring installation if the Oracle libraries and headers are in a non-default location
打开我的电脑->属性->高级属性->环境变量,新增两个环境变量ORACLE_HOME64,OCI_LIB_DIR 和 OCI_INV_DIR
ORACLE_HOME64 : Z:\Softs\OracleClient\12GX64
OCI_LIB_DIR : %ORACLE_HOME64%\sdk\lib\msvc
OCI_INV_DIR : %ORACLE_HOME64%\sdk\include

将Z:\Softs\OracleClient\12GX64这个路径%ORACLE_HOME64%加到Path中。

- 执行CMD命令
|
1
|
$ npm install oracledb |
3.OracleDB普通查询
dbconfig.js 配置数据库连接字符串
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
module.exports = { user : process.env.NODE_ORACLEDB_USER || "test", // Instead of hard coding the password, consider prompting for it, // passing it in an environment variable via process.env, or using // External Authentication. password : process.env.NODE_ORACLEDB_PASSWORD || "test", // For information on connection strings see: // https://github.com/oracle/node-oracledb/blob/master/doc/api.md#connectionstrings connectString : process.env.NODE_ORACLEDB_CONNECTIONSTRING || "192.168.1.100/orcl", // Setting externalAuth is optional. It defaults to false. See: // https://github.com/oracle/node-oracledb/blob/master/doc/api.md#extauth externalAuth : process.env.NODE_ORACLEDB_EXTERNALAUTH ? true : false}; |
app.js执行一个简单的查询语句
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
var oracledb = require('oracledb');var dbConfig = require('./dbconfig.js');//打开一个链接oracledb.getConnection( { user : dbConfig.user, password : dbConfig.password, connectString : dbConfig.connectString }, function(err, connection) { if (err) { console.error(err.message); return; } //执行查询语句 connection.execute( "SELECT department_id, department_name " + "FROM departments " + "WHERE manager_id < :id", [110], // bind value for :id { maxRows: 10 }, // a maximum of 10 rows will be returned. Default limit is 100 function(err, result) { if (err) { console.error(err.message); doRelease(connection); return; } console.log(result.metaData); console.log(result.rows); //查询结束后记得释放链接资源 doRelease(connection); }); });function doRelease(connection){ connection.release( function(err) { if (err) { console.error(err.message); } });} |
4.OracleDB ResultSet查询
普通查询,默认最大返回100条数据,如果需要查询更多的数据那么需要建立一个DataReader和数据库保持连接然后一行一行的读取数据,这个在nodejs oracledb里面就叫ResultSet查询。
你可以这样使用ResultSet,每次返回一行数据
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
connection.execute( "SELECT employee_id, last_name FROM employees ORDER BY employee_id", [], // no bind variables { resultSet: true }, // return a result set. Default is false function(err, result) { if (err) { . . . } fetchOneRowFromRS(connection, result.resultSet); });});. . .function fetchOneRowFromRS(connection, resultSet){ resultSet.getRow( // get one row function (err, row) { if (err) { . . . // close the result set and release the connection } else if (!row) { // no rows, or no more rows . . . // close the result set and release the connection } else { console.log(row); fetchOneRowFromRS(connection, resultSet); // get next row } });} |
当然也可以每次返回多行数据,请使用numRows参数
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
var numRows = 10; // number of rows to return from each call to getRows()connection.execute( "SELECT employee_id, last_name FROM employees ORDER BY employee_id", [], // no bind variables { resultSet: true }, // return a result set. Default is false function(err, result) { if (err) { . . . } fetchRowsFromRS(connection, result.resultSet, numRows); });});. . .function fetchRowsFromRS(connection, resultSet, numRows){ resultSet.getRows( // get numRows rows numRows, function (err, rows) { if (err) { . . . // close the result set and release the connection } else if (rows.length == 0) { // no rows, or no more rows . . . // close the result set and release the connection } else if (rows.length > 0) { console.log(rows); fetchRowsFromRS(connection, resultSet, numRows); // get next set of rows } });} |
http://www.cnblogs.com/mengkzhaoyun/p/5405912.html
crossplatform---Nodejs in Visual Studio Code 07.学习Oracle的更多相关文章
- Nodejs in Visual Studio Code 07.学习Oracle
1.开始 Node.js:https://nodejs.org OracleDB: https://github.com/oracle/node-oracledb/blob/master/INSTAL ...
- Nodejs in Visual Studio Code 02.学习Nodejs
1.开始 源码下载:https://github.com/sayar/NodeMVA 在线视频:https://mva.microsoft.com/en-US/training-courses/usi ...
- Nodejs in Visual Studio Code 03.学习Express
1.开始 下载源码:https://github.com/sayar/NodeMVA Express组件:npm install express -g(全局安装) 2.ExpressRest 打开目录 ...
- Nodejs in Visual Studio Code 14.IISNode与IIS7.x
1.开始 部署IISNode环境请参考:Nodejs in Visual Studio Code 08.IIS 部署Nodejs程序请参考:Nodejs in Visual Studio Code 1 ...
- Nodejs in Visual Studio Code 11.前端工程优化
1.开始 随着互联网技术的发展,企业应用里到处都是B/S设计,我有幸经历了很多项目有Asp.Net的,有Html/js的,有Silverlight的,有Flex的.很遗憾这些项目很少关注前端优化的问题 ...
- Nodejs in Visual Studio Code 10.IISNode
1.开始 Nodejs in Visual Studio Code 08.IIS : http://www.cnblogs.com/mengkzhaoyun/p/5410185.html 参考此篇内容 ...
- Nodejs in Visual Studio Code 04.Swig模版
1.开始 设置Node_Global:npm config set prefix "C:\Program Files\nodejs" Express组件:npm install e ...
- Nodejs in Visual Studio Code 01.简单介绍Nodejs
1.开始 作者自己:开发人员,Asp.Net , html / js , restful , memcached , oracle ,windows , iis 目标读者:供自己以后回顾 2.我看No ...
- crossplatform---Nodejs in Visual Studio Code 02.学习Nodejs
1.开始 源码下载:https://github.com/sayar/NodeMVA 在线视频:https://mva.microsoft.com/en-US/training-courses/usi ...
随机推荐
- PLAN表
用得较多的PLAN表有以下三个ABPPMGR:MANUFACTURINGPLN.SHIPMENTPLAN.PROCUREMENTPLAN .这三个表都是执行StartFP中的exportFP进行数据导 ...
- 【C#】 目前的技能点
[C#] 目前的技能点 一. C/S 1. WinForm 2. WPF 二.B/S 1. MVC 2. ASPX 3. WebService 4. js 5. jQuery , jQuery UI ...
- 【C#】 一些不常用,很容易混淆的知识点
[C#] 一些不常用但很容易混淆的知识点 1. 访问修饰符 internal ,译为内部的, 在同一个程序集中可访问,它的内部是相对与程序集的,可不能想当然了 2. String.Compare 这个 ...
- iOS获取设备型号、装置类型等信息
iOS获取设备型号.设备类型等信息 设备标识 关于设备标识,历史上盛行过很多英雄,比如UDID.Mac地址.OpenUDID等,然而他们都陆陆续续倒在了苹果的门下.苹果目前提供了2个方法供App获取设 ...
- 基本数据类型范围大小&&字节大小
char -128 ~ +127 short -32767 ~ + 32768 unsigned short 0 ~ 65536 int -2147483648 ~ +2147483647 unsig ...
- unreal3脚本stacktrace的问题
在unrealscript里获取调用栈,有下面两函数: /** * Dumps the current script function stack to the log file, useful * ...
- sed初学
1.连接多个sed命令,使用;号 2.批量修改文本中匹配到相应字符串的行 例如,将文本中log_server_port = "12345" 的12345修改成变量中存储的值 sed ...
- session的使用方法
概念:session把客户资料存在服务器中,给浏览器一个加密凭证,每次登录生成的凭证都不相同,浏览器用cookie保存凭证.下次访问时服务器收到凭证后,打开文件读取session信息.session_ ...
- java常用类
String 字符串类 System 可得到系统信息 Runtime类 StringBuilder(StringBuffer)类 Thread 线程类 Math 与数学有关的工具类 Date 日期类( ...
- Android 3D滑动菜单完全解析,实现推拉门式的立体特效
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/10471245 在上一篇文章中,我们学习了Camera的基本用法,并借助它们编写了一 ...