如何解决在 JavaScript 中通过钱包连接到 oracle 云数据库?
我有需要运行的脚本,准确地说是 CREATE TABLE
脚本。
我有这样的功能,见下:
oracleLoader.ts
const oracledb = require('oracledb');
import dbConfig from "./oracleDBConfig";
import log from "../utils/winston";
function oracleLoader(sql: string) {
const connection = oracledb.getConnection(dbConfig);
try{
connection.execute(sql);
log.info("Table created.");
} catch (e) {
log.error("SQL script do not executed!" + e);
}
}
export default oracleLoader;
oracleDBConfig.ts
function oracleDBConfig() {
return {
user: mail,password: pass,connectString: str
};
}
export default oracleDBConfig;
从哪里获得该用户名或我需要电子邮件吗?
从哪里获取密码,是数据库密码还是oracle账户密码?
从哪里获取连接字符串?
如果我有包含 oracle-wallet 的 .zip 文件怎么办。
请记住,我需要连接到云中存在的数据库。
注意:在第 const connection = oracledb.getConnection(dbConfig);
行中,我有一个警告:
Argument type () => {password: string,user: string,connectString: string} is not assignable to parameter type GetConnectionOptions
解决方法
您需要的用户名和密码是数据库用户名和密码。假设您使用的是 Oracle Autonomous DB,那么管理用户名是“ADMIN”(您可以使用它来创建其他用户)。连接字符串将是您在钱包的 zip 文件中下载的 tnsnames.ora 文件中的别名。
因为这对您来说似乎很陌生,所以 Oracle 的“快速入门”是一个方便的起点https://www.oracle.com/database/technologies/appdev/quickstartnodejs.html
“不可分配”错误是一个不同的问题,与 Oracle 无关。首先,您需要调用 dbConfig()
以获取凭据。然后您需要以某种方式使用异步 oracledb 函数。然后你应该添加一些错误处理。
我不是打字稿用户,但这会运行:
const oracledb = require('oracledb');
import dbConfig from "./oracleDBConfig";
async function oracleLoader(sql: string) {
let connection;
try {
connection = await oracledb.getConnection(dbConfig());
const r = await connection.execute(sql);
console.log(r);
console.log("SQL statement was executed!");
} catch (e) {
console.error("SQL statement was not executed!" + e);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}
export default oracleLoader;
请注意,execute()
执行单个语句,而不是脚本。
在现实生活中,您可能想要使用连接池,请参阅 node-oracledb connection pooling 文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。