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_DIR
andOCI_INC_DIR
during 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 ...
随机推荐
- gradle教程 [原创](eclipse/ADT下 非插件 非Android Studio/AS)纯手打 第一篇:安装配置gradle
一个bug 一个脚印的叫你们用gradle. 1介于网络上的很多资料都是老的 不适用与现在的新版本gradle 尤其是有些gradle方法改名了老的用不了 2介于网上都是粘贴复制并且零碎我很蛋疼啊,走 ...
- 校验日期函数的js
/判断输入内容是否为空 function IsNull(){ var str = document.getElementById('str').value.trim(); if(str.length= ...
- 【POJ3237】Tree(树链剖分)
题意:在一棵N个节点,有边权的树上维护以下操作: 1:单边修改,将第X条边的边权修改成Y 2:区间取反,将点X与Y在树上路径中的所有边边权取反 3:区间询问最大值,询问X到Y树上路径中边权最大值 n& ...
- iOS 设置 文字和 图片的位置
1.我最开始实现这个采用的方法:重新自定义一个view,然后有两个属性label和imageView,然后设置位置布局,再添加单击手势,用代理回传点击方法. 2.第二种方法:自定义一个Button继承 ...
- PHP验证码参考页面
http://blog.sina.com.cn/s/blog_95ee14340100z8q9.html http://www.jb51.net/article/44951.htm
- mysql术语解释
数据库(database): 数据表的集合: 数据表 (table):数据的矩阵: 列(column): 相同属性的数据的集合: 行(row): 一个对象的各种属性数据的集合: 冗余():一个字段在多 ...
- 防止刷新/后退引起的重复提交问题的Java Token代码,非Struts
贴子转自http://hi.baidu.com/bobylou,转之前并没有验证文章里的方法是不是有效,估计原作者把它放到blog之前应该做过测试了吧. Struts本身有一套完善的防止重复提交表单的 ...
- 扩展Smack Message
XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性. Smack是一个开源的用 java 写的XMPP(jabber)客户端代码库 因为XMPP是XML,所以进行 ...
- Median of Two Sorted Arrays
题目:https://leetcode.com/problems/median-of-two-sorted-arrays/ 算法分析 这道题的目的,是为了从两个有序列中找到合并序列之后的中位数,即两个 ...
- RNN and LSTM saliency Predection Scene Label
http://handong1587.github.io/deep_learning/2015/10/09/rnn-and-lstm.html //RNN and LSTM http://hando ...