データベースアクセスコンポーネント 1. 概 要 データベースアクセスコンポーネントとは SQL データベースにアクセスして SQL 文 を 実 行 することによりデータベース 検 索 を 行 う 機 能 を 提 供 するコ ンポーネントです また データベースアクセスコンポーネントでは データベースの 構 成 情 報 接 続 情 報 エラー 情 報 等 を 取 得 することも 可 能 です デ ータベースアクセスコンポーネントは アプリケーションビルダーのメニューから 以 下 のように 選 びます [コンポーネント 追 加 ]-[ 入 出 力 ]-[データベース]-[データベースアクセス] このコンポーネントの 使 用 には JDBC を 介 してアクセス 可 能 な MySQL 等 の SQL データベースが 必 要 です MySQL のインストールに 関 しては 工 程 管 理 システム 導 入 マニュアル を 参 照 してください 2. 用 途 データベース 検 索 を 行 いたいとき Microsoft Access や Excel のテーブルデータを 直 接 的 に 操 作 したいとき 3. ここで 使 用 されるイベントとメソッド データベースアクセスコンポーネントから 発 生 するイベントを 次 に 示 します データ 生 成 イベント 表 1 データベースアクセスコンポーネントから 発 生 するイベント(データ 生 成 イベント) トリガ 対 象 データ イベント 番 号 SQL 文 を 実 行 する(String) を 使 用 し データを 返 す SQL 文 を 実 行 し 検 索 結 果 (テーブルデータ) 0 たとき - 1 -
イベント 番 号 を 指 定 して SQL 文 を 実 行 する(String,int) を 使 用 し データを 返 す SQL 文 を 実 行 したとき テーブルに 記 述 した SQL 文 を 実 行 する(PFObjectTable) を 使 用 し データを 返 す SQL 文 を 実 行 したとき 検 索 結 果 (テーブルデータ) 検 索 結 果 (テーブルデータ) 指 定 したイベント 番 号 テーブルの 第 2 列 に 指 定 されたイベント 番 号 処 理 完 了 イベント 表 2 データベースアクセスコンポーネントから 発 生 するイベント( 処 理 完 了 イベント) トリガ 処 理 結 果 データ イベント 番 号 SQL 文 を 実 行 する(String) を 使 用 し データを 返 さない SQL 文 を 実 更 新 された 行 数 (レコード 数 ) 0 行 したとき イベント 番 号 を 指 定 して SQL 文 を 実 行 する(String,int) を 使 用 し 更 新 された 行 数 (レコード 数 ) 指 定 したイベント 番 号 データを 返 さない SQL 文 を 実 行 したとき テーブルに 記 述 した SQL 文 を 実 行 する(PFObjectTable) を 使 用 し 更 新 された 行 数 (レコード 数 ) テーブルの 第 2 列 に 指 定 されたイベント 番 号 データを 返 さない SQL 文 を 実 行 したとき データベースに 接 続 切 断 したとき 0 0 SQLException が 発 生 したとき 0-1 データベースアクセスコンポーネントの 主 なメソッドは 次 のとおりです 表 3 データベースアクセスコンポーネントの 主 なメソッド メソッド 名 データベースに 接 続 する(String, String, String, String) データベースとの 接 続 を 切 断 する() SQL 文 を 実 行 する(String) 機 能 説 明 引 数 にそれぞれドライバ 名 データベースの URL ユーザ 名 パスワードを 指 定 し デー タベースに 接 続 する 接 続 中 のデータベースとの 接 続 を 切 断 する 引 数 として SQL 文 を 指 定 し データベース 検 索 を 実 行 する 検 索 結 果 は 発 生 したイベン トから 取 得 するか 戻 り 値 として 取 得 することができます - 2 -
イベント 番 号 を 指 定 して SQL 文 を 実 行 する(String, int) テーブルに 記 述 した SQL 文 を 実 行 する(PFObjectTable) 接 続 情 報 エラー 情 報 等 を 取 得 する() getdatabasetree() ( 日 本 語 未 設 定 ) setdatabase(string) ( 日 本 語 未 設 定 ) 第 1 引 数 に SQL 文 第 2 引 数 にこのコンポーネントから 発 生 するデータ 生 成 イベントま たは 処 理 完 了 イベントのイベント 番 号 を 指 定 して データベース 検 索 を 実 行 する 引 数 に SQL 文 を 記 載 したテーブルを 指 定 して データベース 検 索 を 実 行 する 接 続 情 報 エラー 情 報 等 を 文 字 列 として 取 得 する 接 続 中 のデータベースの 構 造 をツリーデータとして 取 得 する 引 数 にデータベース 名 を 設 定 して 使 用 するデータベースを 指 定 する メソッドの 機 能 説 明 について 補 足 します データベースに 接 続 する 第 1 引 数 のドライバ 名 には 使 用 するドライバ 名 を 指 定 します 例 えば MySQL に JDBC ドライバを 用 いて 接 続 する 場 合 には com.mysql.jdbc.driver と 記 入 します 第 2 引 数 のデータベースの URL には データベースの サーバ 名 + データベース 名 を 指 定 します データベース ドライバによって 異 なりますが MySQL と 上 述 のドライバを 用 いる 場 合 には jdbc:mysql://ホスト 名 /データベース 名 と 記 入 します MZ Platform と 同 じパソコンに MySQL がイン ストールされている 場 合 ホスト 名 は localhost と 記 入 します また データベースの 種 類 や 設 定 によっては 検 索 結 果 に 日 本 語 が 含 まれる 場 合 文 字 化 けする 場 合 があります この 場 合 使 用 する 日 本 語 コードを jdbc:mysql://ホスト 名 /データベース 名?useUnicode=true&characterEncoding=SJIS というように 明 示 することにより 解 決 する 場 合 があります 詳 細 は 各 データベースの 解 説 書 をご 覧 下 さい 第 3 引 数 のユーザ 名 には データベースに 登 録 されているユーザ ID を 指 定 します 第 4 引 数 のパスワードには 上 述 のユーザ ID に 対 して 設 定 されているパスワードを 指 定 します SQL 文 を 実 行 する 引 数 の SQL 文 として SELECT 文 等 のデータを 返 す SQL コマンドを 実 行 した 場 合 データ 生 成 イベントが 発 生 し 検 索 結 果 はイベントに 内 包 され たテーブルデータとして 取 得 することができます また 戻 り 値 としても 取 得 することができます 一 方 INSERT UPDATE DELETE 等 何 も 返 さない SQL コマンドを 実 行 した 場 合 処 理 完 了 イベントが 発 生 し 変 更 された 行 数 (レコー ド 数 )がイベントの 内 包 データ( 整 数 )として 取 得 できます ただし SQL コマンドは データベースの 種 類 によって 異 なりますので 詳 細 は 市 販 の 参 考 書 をご 覧 下 さい イベント 番 号 を 指 定 して SQL 文 を 実 行 する 上 述 のメソッド SQL 文 を 実 行 する を 発 生 するイベントのイベント 番 号 を 指 定 して 実 行 することができます 発 生 するイベントの 種 類 は 上 述 のメ - 3 -
ソッドに 準 じます イベント 番 号 の 設 定 以 外 操 作 はメソッド SQL 文 を 実 行 する と 同 様 ですので 説 明 を 省 略 します テーブルに 記 述 した SQL 文 を 実 行 する 引 数 の テーブルデータ は N 行 2 列 とし 第 1 列 には SQL 文 第 2 列 には 第 1 列 の SQL 文 が 実 行 後 に 発 生 するイベントのイベント 番 号 を 記 載 しま す 第 1 行 から 順 に 第 N 行 まで SQL 文 が 実 行 され 発 生 するイベントの 種 類 は 上 述 のメソッドと 同 じです SQL 文 をテーブルとして 設 定 する 以 外 操 作 はメソッド SQL 文 を 実 行 する と 同 様 ですので 説 明 を 省 略 します 接 続 情 報 エラー 情 報 等 を 取 得 する データベースへのアクセス 時 に 発 生 する 情 報 を 文 字 列 として 取 得 することができます データベースの 接 続 状 態 やエラー 等 が 取 得 できます getdatabasetree 接 続 中 のデータベースの 構 造 がツリーデータとして 取 得 できます ルートはデータベース 製 品 名 ノードはデータベース 名 リーフはテーブル 名 とな ります setdatabase 引 数 に 使 用 するデータベース 名 を 指 定 することにより 検 索 対 象 のデータベースを 変 更 することができます 接 続 時 に 指 定 したデータベースから 使 用 するデータベースを 変 更 する 場 合 などに 使 用 します 4. コンポーネント 使 用 例 データベースアクセスコンポーネントを 用 いたサンプルアプリケーションが AD_DATA Sample に 収 録 されています このサンプルアプリケーションは サンプルのデータベース production が 既 に 存 在 することを 仮 定 しています( 他 のデータベース テーブルでも 構 いません) サンプルのデータベース production に 関 しては 工 程 管 理 システム 操 作 マニュアル または 工 程 管 理 システム 導 入 マニュアル を 参 照 してください ビルダーまたはローダーから データベースアクセス_1.mzax をロードし 実 行 してください 図 1 のようにフレームが 2 つ 表 示 されます - 4 -
SQL 文 を 記 述 して 実 行 でき データベースの 構 成 がツリーで 表 示 されます テーブルの 内 容 およ び 検 索 結 果 がここに 表 示 されます 図 1 データベースアクセスサンプルアプリケーション 左 側 のフレームには 接 続 するデータベースシステムのドライバ 名 サーバ 名 ユーザ 名 パスワード データベース 名 を 設 定 します これらが 正 しく 設 定 されている 場 合 には [ 接 続 ]ボタンを 押 すことによりデータベースに 接 続 できます また[ 切 断 ]を 押 した 場 合 には 接 続 中 のデータベースから 切 断 できます 右 側 のフレームには データベースの 構 成 テーブルの 内 容 が 表 示 されます テキストフィールドに SQL 文 を 記 述 して[ 実 行 ]ボタンを 押 すことにより テ ーブルを 検 索 することが 可 能 です 注 意 :データベースの 種 類 や 設 定 によっては 検 索 結 果 に 日 本 語 が 含 まれる 場 合 文 字 化 けする 場 合 があります この 場 合 使 用 する 文 字 コードを 指 定 することにより 解 決 する 場 合 があります MySQL の 場 合 には 図 1 の 左 側 のフレームのデータベース 名 の 欄 に データベース 名?useUnicode=true&characterEncoding=SJIS と 記 述 し 再 接 続 します 詳 細 は 各 データベースの 解 説 書 をご 覧 下 さい データベースに 接 続 すると 右 のフレームは 図 2 のようになります - 5 -
データベース 製 品 名 [URL] データベース 名 図 2 データベース 接 続 時 のイメージ フレーム 中 のツリーにはデータベースの 構 造 が 表 示 されます ルートにはデータベース 製 品 名 と URL が ノードにはデータベース 名 が 表 示 されます ノ ードを 開 くと 図 3 に 示 すようにデータベースを 構 成 するテーブル 名 が 表 示 され テーブルを 選 択 すると 内 容 を 閲 覧 することができます - 6 -
テーブル 名 図 3 テーブル 内 容 参 照 時 のイメージ フレーム 上 部 のテキストフィールドに SQL 文 を 記 述 し [ 実 行 ]ボタンを 押 すと SQL 文 による 検 索 結 果 を 表 示 することができます あらかじめ 記 述 されて いる SELECT id, label FROM project はテーブル project からフィールド id と label だけで 構 成 される 部 分 を 選 択 し 表 示 する SQL 文 です この SQL 文 を 実 行 すると 図 4 のように 検 索 結 果 が 表 示 されます SQL 文 に 関 する 詳 細 は 市 販 の 参 考 書 をご 覧 下 さい - 7 -
図 4 SQL 文 による 検 索 時 のイメージ 次 にサンプルアプリケーションでのコンポーネント 間 の 接 続 について 説 明 します はじめに データベース 接 続 フレーム に 記 述 された 情 報 を 使 用 して データベースに 対 する 接 続 及 び 切 断 を 行 うため 次 のようにコンポーネント 間 を 接 続 しています - 8 -
データベースの 検 索 に 関 しては データベース 検 索 フレーム から 発 生 するデータ 設 定 イベントに 内 包 される SQL 文 を 取 得 して 検 索 を 実 行 するように 次 のようにメソッドを 使 用 しています - 9 -
また 検 索 結 果 はデータベースアクセスコンポーネントから 発 生 するデータ 生 成 イベントにテーブルデータとして 内 包 されており そのテーブルデータ を データベース 検 索 フレーム のテーブルに 設 定 しています - 10 -
サンプルアプリケーションではデータベース 接 続 時 に データベースの 構 造 をツリーとして 表 示 するように 次 の 図 のようにメソッドを 使 用 しています - 11 -
サンプルアプリケーションではツリーのテーブル 名 が 選 択 された 際 に 使 用 するデータベースをそのテーブルが 含 まれているデータベースに 切 り 替 える ため 次 の 図 のようにメソッドを 使 用 しています - 12 -
参 考 のため さらに 機 能 を 拡 張 したサンプルアプリケーションも AD_DATA Sample に 収 録 されています はじめの 拡 張 例 は データベースアクセス_1.mzax を Microsoft Excel(エクセル)に 接 続 するように 変 更 を 行 ったものです ビルダーまたはローダーから データベースアクセス_2(エクセル 接 続 ).mzax をロードし 実 行 してください 図 5 のようにフレームが 2 つ 表 示 されます エクセルファイルへの 接 続 にはユーザ 名 及 びパスワードを 設 定 する 必 要 がないため その 入 力 欄 をフレームから 削 除 してあります ドライバには sun.jdbc.odbc.jdbcodbcdriver サーバ 名 には jdbc:odbc:driver=microsoft Excel Driver (*.xls) データベース 名 にはエクセルファイルまでのパス を 設 定 します ファイルの 選 択 は[ 参 照...]ボタンを 押 してファイル 選 択 ダイアログから 行 うこともできます これらが 正 しく 設 定 されている 場 合 には [ 接 続 ] ボタンを 押 すことによりエクセルファイルに 接 続 できます また[ 切 断 ]を 押 した 場 合 には 接 続 中 のエクセルファイルから 切 断 できます 右 側 のフレームには ワークシートの 構 成 及 び 内 容 が 表 示 されます ワークシート 内 のデータの 検 索 するための SQL 文 は ワークシート 名 (テーブル 名 )は 後 ろに$をつけダブ ルクォーテーションで 囲 むことが 他 のデータベースとは 異 なりますので ご 注 意 ください - 13 -
図 5 データベースアクセスサンプルのエクセル 接 続 への 変 更 二 つ 目 の 拡 張 例 は テーブルのレコードの 操 作 を 行 う 機 能 を 追 加 したものです 本 サンプルアプリケーションは MySQL Postgres JavaDB で 動 作 を 確 認 済 みですが 他 のデータベースに 関 しては 修 正 が 必 要 になる 場 合 があります また Microsoft Excel 及 び Access には 未 対 応 です ビルダーまたはローダーから データベースアクセス_3( 機 能 拡 張 版 ).mzax をロードし 実 行 してください 図 6 のようにフレームが 2 つ 表 示 されます 左 側 のデータベースへの 接 続 を 行 うフレームでは スキーマ 対 応 のデータベース(Postgres 等 )でスキーマを 指 定 できるように 拡 張 されています(MySQL ではバージョン 4.x.x 以 前 では 使 用 しません) 一 方 右 側 のフレームには テーブルを 作 成 及 び 削 除 するボタン テーブルのレコードを 操 作 するボタンが 追 加 されています テーブル 作 成 削 除 ボタンを 押 すと 図 7 のようなテーブル 作 成 削 除 画 面 が 表 示 されます ここにテーブルを 追 加 するデータベース 名 (またはスキーマ 名 ) 追 加 するテーブル 名 各 列 の 名 前 とタイプ サイズ(VARCHAR 等 で 指 定 ) NULL 可 否 主 キーの 指 定 等 を 指 定 して 作 成 ボタンを 押 すとテーブルが 追 加 できます 一 方 削 除 ボタンを 押 すと 指 定 されたテーブルが 削 除 されます 作 成 するテーブルには 主 キーを 必 ず 指 定 するよう 注 意 してください このサンプルアプリケーションでは 主 キーが 設 定 されていなければ レコードの 更 新 と 削 除 ができないようになっています 右 側 の 参 照 挿 入 更 新 削 除 ボタンを 押 すと 図 8 のように ボタンに 対 応 した 操 作 画 面 が 表 示 されます このとき テーブルのレコードを 選 択 しておくと 内 容 が 自 動 的 にフィールドに 表 示 されます 各 欄 に 記 入 または 更 新 し ボタンを 押 すと 各 処 理 が 実 行 されます このとき 主 キーが 設 定 さ れていないテーブルについては 更 新 及 び 削 除 処 理 が 行 えないのでご 注 意 ください - 14 -
スキーマ 対 応 のデータベー ス(Postgres など)でスキ ーマを 指 定 できます テーブルを 作 成 または 削 除 できます テーブルのレコードの 参 照 挿 入 更 新 削 除 がで きます 図 6 データベースアクセスサンプル 拡 張 版 - 15 -
サイズ( 半 角 での 文 字 数 )は VARCHAR,CHAR 等 で 指 定 します 主 キーは 必 ず 指 定 してください 図 7 テーブル 作 成 画 面 参 照 挿 入 更 新 削 除 図 8 レコード 操 作 画 面 - 16 -