4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-08-07

#はじめに

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ドライバー

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?