在 JavaScript 中通过钱包连接到 oracle 云数据库?
Connect to oracle cloud database by wallet in JavaScript?
我有需要 运行 的脚本,准确地说是 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 的 'quick start' 是一个方便的起点 https://www.oracle.com/database/technologies/appdev/quickstartnodejs.html
'not assignable' 错误是另一个问题,与 Oracle 无关。首先,您需要调用 dbConfig()
来获取凭据。然后您需要以某种方式使用异步 oracledb 函数。然后你应该添加一些错误处理。
我不是 typescript 用户,但是这个运行:
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 文档。
我有需要 运行 的脚本,准确地说是 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 的 'quick start' 是一个方便的起点 https://www.oracle.com/database/technologies/appdev/quickstartnodejs.html
'not assignable' 错误是另一个问题,与 Oracle 无关。首先,您需要调用 dbConfig()
来获取凭据。然后您需要以某种方式使用异步 oracledb 函数。然后你应该添加一些错误处理。
我不是 typescript 用户,但是这个运行:
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 文档。