はじめに
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 ドライバへのパスを指定する必要があります。
上記のコードを実行すると、レコード数とテーブルデータがコンソールに表示されます。
簡単ですね!