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

PervasiveデータベースにNode.jsから接続するサンプル

$
0
0

はじめに

20世紀に作られ現在も稼働中のVBのシステムにデータ出力の要件があったので、Node.jsで実装してみました。
あまりにも情報が少なすぎて苦労したので備忘録として残します。

環境

項目内容
データベースPervasive PSQL v10
(サービスとして起動)
OSWindwos10

準備

Pervasiveのインストールディレクトリ配下にある以下の3ファイルが必要です。

  • pvjdbc2.jar
  • pvjdbc2x.jar
  • jpscs.jar

プロジェクトディレクトリに drivers というディレクトリを作ってコピーしておきます。

ソース

Pervasiveデータベースからレコードを取得してJSONを返すAPIサーバーのサンプルです。
なお、このプログラムにルーティングするExpress/Routerのプログラムが別途必要です。
Pervasiveのサービスが起動しているホスト上でプログラムが実行されることを前提としています。

constexpress=require("express");constrouter=express.Router();constJDBC=require("jdbc");constjinst=require("jdbc/lib/jinst");if(!jinst.isJvmCreated()){jinst.addOption("-Xrs");jinst.setupClasspath(["./drivers/pvjdbc2.jar","./drivers/pvjdbc2x.jar","./drivers/jpscs.jar"]);}constconf={url:"jdbc:pervasive://localhost:1583/MYDATA?transport=tcp",drivername:"com.pervasive.jdbc.v2.Driver",properties:{}};constinitializeCB=err=>{if(err){console.log(err);}};constreserveCB=(err,connObj,sql)=>{returnnewPromise((resolve,reject)=>{if(!connObj){console.log("connObj is undefined");reject(err);}constconn=connObj.conn;conn.createStatement((err,statement)=>{if(err){console.log(err);reject(err);}statement.executeQuery(sql,(err,resultset)=>{if(err){console.log(err);reject(err);}resultset.toObjArray((err,result)=>{resolve(result);});});});});};module.exports=router;/**
 * テーブルから全レコードを取得しJSONを返す
 */router.post("/",(req,res)=>{constjdbc=newJDBC(conf);jdbc.initialize(initializeCB);jdbc.reserve((err,connObj)=>{reserveCB(err,connObj,"SELECT * FROM MYTABLE").then(data=>{constheaders={"Content-Type":"text/json;charset=utf-8"};res.set(headers).json(data);}).then(()=>{jdbc.release(connObj,(err)=>{if(err){console.log(err.message);}})}).then(()=>{jdbc.purge(err=>{});});});});

Viewing all articles
Browse latest Browse all 8838

Trending Articles