#はじめに
Node.jsアプリケーションからJDBCでSQL Server、Oracle、DB2、Postgres、MongoDBなどのDBや、Salesforce、Eloqua、Oracle Sales Cloud、Oracle Service CloudなどのSaaSアプリケーションにJDBCで接続する必要性があるならば、DataDirect JDBCドライバを利用すると楽勝です。
この記事では、DataDirect JDBC ドライバを使用して Node.js から Salesforce データに接続してみます。
事前準備
Node.js
#DataDirect Oracle JDBC ドライバのダウンロード&インストール
1,こちらよりDataDirect JDBCドライバをダウンロードします(お試し版が15日使えます)。
2,jarファイルのダウンロードが終了したら、パッケージを実行してJDBCドライバをインストールします。
1)Windowsの場合、インストーラを実行し、JDBCドライバをインストールします。
2)Unix/Linuxの場合、以下のコマンドでドライバをインストールします。
java -jar PROGRESS_DATADIRECT_JDBC_INSTALL.jar
##Node.jsのJDBCパッケージをインストールする
1,Node.jsでは、JDBCドライバを利用するためにnode-jdbcパッケージをインストールする必要があります。
2,以下のコマンドでパッケージをインストールします。
npm i jdbc
3,DataDirect JDBCドライバを/install_dir/Progress/JDBC_XX/libからプロジェクトライブラリにコピーします。
今回はSalesforceで試すので、Salesforce JDBCドライバであるsforce.jarをコピーしました。
#Node.jsからSalesforceに接続する
1,DataDirect JDBCドライバを経由し、Salesforceに接続。テーブルにクエリするサンプルコードを以下に記述します。必要に応じて変更くださいね!
var JDBC = require('jdbc');
var jinst = require('jdbc/lib/jinst');
var asyncjs = require('async');
if (!jinst.isJvmCreated()) {
jinst.addOption("-Xrs");
jinst.setupClasspath(['./drivers/sforce.jar']);
}
var config = {
// SparkSQL configuration to your server
url: 'jdbc:datadirect:sforce://login.salesforce.com;DatabaseName=default;SecurityToken=stoken',
drivername: 'com.ddtek.jdbc.sforce.SForceDriver',
minpoolsize: 1,
maxpoolsize: 100,
user: 'saiteja09@gmail.com',
password: 'password',
properties: {}
};
var sforcesqldb = new JDBC(config);
//initialize
sforcesqldb.initialize(function(err) {
if (err) {
console.log(err);
}
});
sforcesqldb.reserve(function(err, connObj) {
if (connObj) {
console.log("Using connection: " + connObj.uuid);
var conn = connObj.conn;
// Query the database.
asyncjs.series([
function(callback) {
// Select statement example.
conn.createStatement(function(err, statement) {
if (err) {
callback(err);
} else {
statement.setFetchSize(100, function(err) {
if (err) {
callback(err);
} else {
//Execute a query
statement.executeQuery("SELECT * FROM SFORCE.Account;",
function(err, resultset) {
if (err) {
callback(err)
} else {
resultset.toObjArray(function(err, results) {
//Printing number of records
if (results.length > 0) {
console.log("Record count: " + results.length);
console.log(results);
}
callback(null, resultset);
});
}
});
}
});
}
});
},
], function(err, results) {
// Results can also be processed here.
// Release the connection back to the pool.
sforcesqldb.release(connObj, function(err) {
if (err) {
console.log(err.message);
}
});
});
}
});
2,setupClasspath メソッドに注意です。DataDirect Salesforce JDBC ドライバへのパスを指定する必要があります。
上記のコードを実行すると、レコード数とテーブルデータがコンソールに表示されます。
簡単ですね!