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命令
$ npm install oracledb
3.OracleDB普通查询
dbconfig.js 配置数据库连接字符串
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执行一个简单的查询语句
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,每次返回一行数据
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参数
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
}
});
}
Nodejs in Visual Studio Code 07.学习Oracle的更多相关文章
- crossplatform---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 01.简单介绍Nodejs
1.开始 作者自己:开发人员,Asp.Net , html / js , restful , memcached , oracle ,windows , iis 目标读者:供自己以后回顾 2.我看No ...
- Nodejs in Visual Studio Code 04.Swig模版
1.开始 设置Node_Global:npm config set prefix "C:\Program Files\nodejs" Express组件:npm install e ...
- crossplatform---Nodejs in Visual Studio Code 02.学习Nodejs
1.开始 源码下载:https://github.com/sayar/NodeMVA 在线视频:https://mva.microsoft.com/en-US/training-courses/usi ...
随机推荐
- 记一次网站服务器迁移(my)
遇到的难题: 基本没有遇到太大的问题,因为服务器环境是配好的阿里云环境,最后再nginx的rewrite配置遇到了一点问题,最后也算解决. 收获小点: 1) vim替换命令: 利用 :s 命令可以实现 ...
- 使用OC开发phonegp 组件
使用OC开发phonegp 组件 1. 使用oc 对phonegp中的组件近些开发,首先具体的pgonegp跟nativecode之间的一些优劣就不说了,开发phonegp 对应的组件主要就是使用na ...
- Wpf自定义路由事件
创建自定义路由事件大体可以分为三个步骤: ①声明并注册路由事件. ②为路由事件添加CLR事件包装. ③创建可以激发路由事件的方法. 以ButtonBase类中代码为例展示这3个步骤: public a ...
- 显示scrollbar
修改CSS overflow的值 overflow: 参考MDN 例子: overflow: auto or scroll
- jQuery慢慢啃之属性(三)
1.attr(name|properties|key,value|fn)设置或返回被选元素的属性值. $("img").attr("src");//获取属性 $ ...
- PHP替换中文字符
mb_regex_encoding('utf-8');$htmlNavSubmenu2 = str_replace('<li id="w-menu-food-334"> ...
- Invoke()/BeginInvoke()区别
查看MSDN如下: Control..::.Invoke ---> 在拥有此控件的基础窗口句柄的线程上执行委托. Control..::.BeginInvoke ---> ...
- linux安装时提示发生不正常错误问题
跳过md5系统较检(每个系统版本都有一个md5编码唯一) 在安装CentOS时 提示 找不到磁盘,是否安装程序,选择安装程序进行"下一步" 提示: 发生不规则,不正常错误 原因:没 ...
- 谷歌制图服务(Google Chart)接口生成二维码
Google公布了制图服务(Google Chart)的接口,这项服务用起来相当简单,只使用浏览器就可以用来为统计数据自动生成图片. 目前谷歌制图服务提供折线图.条状图.饼图.Venn图.散点图.二维 ...
- 总结几种C#窗体间通讯的处理方法
摘要:本文介绍了C#窗体间通讯的几种处理方法,即传值.继承.事件回调,希望对大家有用. http://www.cnblogs.com/jara/p/3439603.html 应用程序开发中,经常需要多 ...