Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8946

Node.jsよりJDBCでOracle, Salesforceなどに1ドライバで接続

$
0
0

はじめに

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 ドライバへのパスを指定する必要があります。

上記のコードを実行すると、レコード数とテーブルデータがコンソールに表示されます。

簡単ですね!

参考:Salesforce.com対応高速JDBCドライバー


Viewing all articles
Browse latest Browse all 8946

Trending Articles