テクセル
Ruby用JWDBライブラリ(Windows用)

JWDBライブラリ(jwdb.rb)は、JoyWatcher付属の標準データベースJWDB(idbファイル)をRubyから使用するライブラリです。

使用したrubyのバージョン 2.6.3p62 (RubyInstaller 32ビット)
使用したJoyWatcherのバージョン 9.0.0
jwdb.rbのダウンロード(jwdb_v111.7z)

Jwdbtクラス JWDB用クラスです。

アクセサ

colCount
SQL実行結果におけるフィールド数(列数)を得ます。
rowCount
SQL実行結果における行の数を得ます。
ierrrun
SQLエラー発生後の処理を実行するかどうかの指定を行います。
0:実行しない(デフォルト)、1:実行する

クラスメソッド

connect(jwsver)
JWDBデータベースに接続します。
jwsver
joywatcherサーバが動作しているパソコン名または、IPアドレス
joywatcherサーバと同じパソコンから接続する場合は、「localhost」とします。
戻り値
正常時:0 、接続失敗時:0以外
close
取得データをクリアします。
戻り値
なし
disconnect
JWDBデータベースとの接続を切断します。
戻り値
なし
execSQL(ssql)
SQL文の実行を行います。
ssql
実行するSQL文を指定
戻り値
正常時:0 、SQL実行失敗時:0以外
columnText(irow,icol)
SQL文実行後の結果を取得します。
irow
取得データの行番号を指定 0~
icol
取得データの列番号を指定 0~
戻り値
文字列型の取得データ
columnName(icol)
SQL文実行後の列名を取得します。
icol
列番号を指定 0~
戻り値
指定された列番号の列名(文字列型)

インスタンスの作成

作成例 jwdb = jwdbt.new(__ENCODING__)

引数に文字のエンコーディング「__ENCODING__」を指定します。シフトJIS(magic comment:「Windows-31j」,「shift_jis」)とUTF-8が有効です。

日付時間関数

fromJwDateTime(jwdt)
JoyWatcherの日付時間値をRubyのDateTime型に変換します。
jwdt
joywatcherの日付時間値、実数
戻り値
RubyのDateTime型値
encodeJwDateTime(iy, imn, id, ih, imi, is, ims = 0)
年月日時分秒をJoyWatcherの日付時間値に変換します。
iy
年 西暦
imn
月 1~12
id
ih
時 0~23
imi
分 0~59
is
秒 0~59
ims
ミリ秒 0~999 省略可
戻り値
エラーコード 正常で0
日付時間値(シリアル値)

使用例

1)テーブルの作成、読み込み、書き込みの例

テーブル、インデックスの作成、書き込み、読み込みの例です。日付時間は、JoyWatcherの日付時間値としています。


# -*- coding: utf-8 -*-
# jwdb サンプル0
require 'date'
require './jwdb'

jwdb = Jwdbt.new(__ENCODING__)
ir = jwdb.connect("localhost")
if ir != 0
   print "JWDB接続エラー¥r¥n"
   exit
end
print "JWDB接続成功¥r¥n"

sSQL = "CREATE TABLE IF NOT EXISTS tbl6 (" +
       "id int PRIMARY KEY," +
       "ptime real," +
       "cnote text)"
jwdb.execSQL(sSQL)
sSQL = "CREATE INDEX IF NOT EXISTS indx6 ON tbl6 (ptime)"
jwdb.execSQL(sSQL)

sSQL = "SELECT max(id) FROM tbl6"
jwdb.execSQL(sSQL)
id = 0
if jwdb.rowCount != 0
   id = jwdb.columnText(0,0).to_i
end
id += 1

dta = DateTime.now
ir, jwdt = encodeJwDateTime(dta.year, dta.mon, dta.day, dta.hour, dta.min, dta.sec)
sSQL = "INSERT INTO tbl6 VALUES (" + id.to_s + "," + jwdt.to_s + ",'日本abc123')"
jwdb.execSQL(sSQL)

sSQL = "SELECT * FROM tbl6 ORDER BY id DESC LIMIT 5"
jwdb.execSQL(sSQL)
sa = ""
for ix in 0..(jwdb.colCount - 1)
   sa += jwdb.columnName(ix) + ","
end
print sa + "¥r¥n"
for iy in 0..(jwdb.rowCount - 1)
   sa = jwdb.columnText(iy,0)
   dta = fromJwDateTime(jwdb.columnText(iy,1).to_f)
   sa += "," + dta.strftime("%Y-%m-%d %H:%M:%S") + "," + jwdb.columnText(iy,2)
   print sa + "¥r¥n"
end

jwdb.close
jwdb.disconnect
   

履歴

2016.11 Ver.1.11
fromJwDateTime不具合修正
2015.02 Ver.1.10
encodeJwDateTime関数追加、utf-8サポート。
2012.03 Ver.1.01
「disconnect」がサポートされてないJoyWatcherで例外が発生する場合の対策他(disconnectは、joywatcher Ver.4.5以降で対応)
2012.02 Ver.1.00
参考資料:joywatcher JWDB通信 JWDBApi ActiveXヘルプ
JoyWatcherは、ジェイティ エンジニアリング株式会社の製品です。
Rubyユーティリティ
©2012-2019 TEXCELL CORPORATION
テクセル株式会社