作者需要使用electron写一个桌面应用程序,需要用到oracle数据库,oracle在虚拟机中已经配好了,oracle的版本是oracle10g
,之后需要在本机上连接oracle,可以使用node-oracledb
连接,下面就是作者连接oracle的过程。
下载连接所需要的配置
连接oracle需要用到两个东西
- Visual Studio 2013 Redistributable 用于预构建 node-oracledb 二进制文件
- Oracle Instant Client,oracle客户端,有了这个才能连接oracle
由于去官网下载需要登录,没有账号的话,注册会等很久,所以可以直接提取。
链接:https://pan.baidu.com/s/1zOai...
提取码:5sz1
这里引用node-oracledb官网中的一段话
Oracle 的标准客户端-服务器网络互操作性允许不同版本的 Oracle 客户端和 Oracle 数据库之间的连接。有关支持的配置,请参阅 Oracle 支持的文档 ID 207303.1。总之,Oracle Client 21 可以连接到 Oracle Database 12.1 或更高版本。Oracle Client 19、18 和 12.2 可以连接到 Oracle Database 11.2 或更高版本。Oracle Client 12.1 可以连接到 Oracle Database 10.2 或更高版本。Oracle Client 11.2 可以连接到 Oracle Database 9.2 或更高版本。创建连接的技术限制可能更灵活。例如,Oracle Client 21 可以成功连接到 Oracle Database 11.2,而 Oracle Client 12.2 可以成功连接到 Oracle Database 10.2。
所以作者这里下载的是Visual Studio 2013 Redistributable
和 oracle client 12.2.0.1.0
双击运行下载好的 Visual Studio 2013 Redistributable
,运行成功之后就可以不用管了。
解压 oracle client 12.2.0.1.0
,然后将文件放在一个可访问目录。
测试连接
自己创建一个node的测试demo
var oracledb = require('oracledb');
try {
oracledb.initOracleClient({ libDir: 'E:\\instantclient-basic-windows.x64-12.2.0.1.0\\instantclient_12_2' });
// 这里的位置是oracle client 12.2.0.1.0解压后保存的位置
} catch (err) {
console.error('Whoops!');
console.error(err);
process.exit(1);
}
oracledb.getConnection({
connectString: "虚拟机ip地址/数据库名称",
user: "用户名",
password: "密码"
},async function (err, connection) {
if (err) {
console.error('error:', err.message);
} else {
console.log("连接成功");
try {
const res = await connection.execute('select * from table');
console.log('res:', res);
} catch (e) {
console.log('查询失败!');
}
}
});
除了在代码里面加的 instantclient-basic-windows.x64-12.2.0.1.0
路径外,还可以直接将路径加到自己电脑的环境变量里面
oracledb.initOracleClient({ libDir: 'E:\\instantclient-basic-windows.x64-12.2.0.1.0\\instantclient_12_2' });
var oracledb = require('oracledb');
oracledb.getConnection({
connectString: "虚拟机ip地址/数据库名称",
user: "用户名",
password: "密码"
},async function (err, connection) {
if (err) {
console.error('error:', err.message);
} else {
console.log("连接成功");
try {
const res = await connection.execute('select * from table');
console.log('res:', res);
} catch (e) {
console.log('查询失败!');
}
}
});
如果安装的oracle的版本或者其他的东西和作者的不一样,可以去官网看看。
node-oracledb官方文档
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。