Reputation: 33
I'm trying to connect with npm Oracledb using typescript and in the format of class and module using typescript. For example,
Import {Oracledb} from 'oracledb'
class ConnectDAO{
public ConnectionDB(): connection{
let connection = Oracledb.getConnection(// connection string);
Return connection;
}
public fetchData(connection): recordset{
connection.execute('query')
Return rs;
}
}
can anyone please help to achieve this issue
Upvotes: 2
Views: 6363
Reputation: 2973
Install below packages
npm i oracledb @types/oracledb --save
database.ts
import OracleDB from 'oracledb';
export default class DatabaseConnection {
private oracleDB = OracleDB;
private dbConfig = {
user: "<<USER_NAME>>",
password: "<<USER_PASSWORD>>",
connectString: "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST=<<YOUR_IP>>)(PORT = <<YOUR_PORT>>))(CONNECT_DATA =(SERVICE_NAME='<<YOUR_SERVICE_NAME>>')))"
}
public async init(): Promise<void> {
}
public async connectWithDB() {
return new Promise((resolve, reject) => {
this.oracleDB.getConnection(this.dbConfig, (err, connection) => {
if (err) {
reject(err.message);
}
console.log('Connected with Database...');
resolve(connection);
});
});
}
public doRelease(connection) {
connection.release((err) => {
if (err)
console.error(err.message);
console.log('connection released');
});
}
}
App.js
Import database file in your App.js/Service.js File
import DatabaseConnection from './database';
Create a class variable for the same
public dbConnect = new DatabaseConnection;
Add below method in same file
private async connectToDB() {
await this.dbConnect.connectWithDB().then(async (connection: any) => {
await connection.execute("SELECT * FROM User", [], (err, result) => {
if (err) {
console.error(err.message);
}
console.log(result.metaData);
});
this.dbConnect.doRelease(connection);
}).catch(error => {
console.log(error);
});
}
Upvotes: 1
Reputation: 22854
Here is a full example. Just fill in your connection string...
import * as oracledb from 'oracledb';
let testConfig: oracledb.IConnectionAttributes = {
user: `scott`,
password: `tiger`,
connectString: "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=..."
}
class ConnectDAO {
public async ConnectionDB(): Promise<oracledb.IConnection> {
return await oracledb.getConnection(testConfig);
}
public fetchData(connection: oracledb.IConnection):
oracledb.IPromise<oracledb.IExecuteReturn> {
return connection.execute('SELECT CURRENT_TIMESTAMP FROM dual');
}
}
async function connectAndExecute() {
let connectDao = new ConnectDAO();
try {
let connection = await connectDao.ConnectionDB();
let results = await connectDao.fetchData(connection);
console.log(`results : ${JSON.stringify(results, null, 4)}`)
} catch (err) {
console.log(`error caught ${err}`);
}
}
connectAndExecute();
Upvotes: 4