参考:MZ Platform データベース接続>データベースの準備
列名 | データ型 | MZでのデータ型 | NULLの許容 | 特記 |
---|---|---|---|---|
id | int | java.lang.Integer(整数) | NO | Primary Key, auto_increment |
label | text | 文字列 | YES | |
product | text | 文字列 | YES | |
delivery | datetime | 日付 | YES |
列名 | データ型 | MZでのデータ型 | NULLの許容 | 特記 |
---|---|---|---|---|
isCompleted | tinyint(1) | 論理 | YES | |
dateEnd | datetime | 日付 | YES | |
dateStart | datetime | 日付 | YES | |
workingTime | int | java.lang.Integer(整数) | YES | |
projectLabel | text | 文字列 | YES | |
id | int | java.lang.Integer(整数) | NO | Primary Key, auto_increment |
process | text | 文字列 | YES |
id | label | product | delivery |
---|---|---|---|
1 | A01 | A01 | 2023/11/11 |
2 | A02 | A02 | 2023/12/12 |
isCompleated | dateEnd | dateStart | workingTime | projectLabel | id | process |
---|---|---|---|---|---|---|
0 | 2023/11/08 12:00:00 | 2023/11/08 13:00:00 | 90 | A01 | 1 | めっき |
1 | 2023/12/05: 15:30:00 | 2023/12/05 18:00:00 | 150 |
A02 | 2 | 検査 |
コンポーネント名 | 必要数 | カテゴリー | コンポーネントキー/テキスト |
---|---|---|---|
フレーム | 1 | 画面構成部品>フレーム | データベース接続 |
ラベル | 5 | 画面構成部品>テキスト | ドライバ名 サーバ名 ユーザ名 パスワード データベース名 |
テキストフィールド | 4 | 画面構成部品>テキスト | ドライバ サーバ ユーザ データベース |
パスワード入力フィールド | 1 | 画面構成部品>テキスト | パスワード |
ボタン | 2 | 画面構成部品>ボタン | 接続 切断 |
文字列格納変数 | 1 | 処理部品>変数 |
[接続]ボタンが押されたときに、対応するテキストフィールド及びパスワード入力フィールドからテキストを取得し、『データベースアクセス』のメ
ソッド『データベースに接続する(String, String, String,String)
』に設定すればよいのですが、注意が必要です。
このメソッドの第1引数、第3引数、第4引数は対応するテキストフィールド又はパスワード入力フィールドから取得し設定すればよいのですが、
第2 引数(データベースのURL)は「サーバ名」+「データベース名」になります。
従って、テキストをつなぎ合わせる処理が必要になります。
この処理は『文字列格納変数』で行うことができます。
[接続]ボタンが押されたときに、この処理が実行されるようにコンポーネント間を接続しましょう。
上位の階層からも呼び出せるよう[サブルーチン]を先頭に処理を作成します。
コンポーネント | メソッド | 変更メソッド名 |
---|---|---|
フレーム | フレームを表示する() | 同左 |
フレーム | フレームを閉じる() | 同左 |
テキストフィールド(ドライバ) | テキストを取得する() | ドライバ名を取得する() |
テキストフィールド(ユーザ) | テキストを取得する() | ユーザ名を取得する() |
パスワード入力フィールド | パスワード文字列を取得する() | 同左 |
文字列格納変数 | 文字列を取得する() | データベースのURL を取得する() |
コンポーネント名 | 必要数 | カテゴリー |
---|---|---|
データベースアクセス | 1 | 入出力>データベース |
それでは、[実行(設定可)]ボタンを押して、ここまで作成したアプリケーションを実行させ、データベースに接続してみましょう。
はじめに、ドライバ名、サーバ名、ユーザ名、パスワード、データベース名を入力します。
例えば、MySQL にJDBC
ドライバを用いて接続する場合には、ドライバ名には“com.mysql.jdbc.Driver”、サーバ名には“jdbc:mysql://ホスト名/”と記入しま
す。
MZ Platform と同じパソコンにMySQL がインストールされている場合、ホスト名は“localhost”と記入します。
ユーザ名、パスワード、データベース名には、それぞれデータベースインストール時に設定したものを入力します。
例えば、MZ Platform
に添付のデータベース“production”をインストール済みの場合は、データベース名は“production”、ユーザ名とパスワードはデータベースインストール
時に設定した値を記入します。
この状態で、念のためアプリケーションを保存することをお勧めします。
それでは[接続]ボタンを押してみましょう。正しく接続された場合には、何も起こりません。
接続に失敗した場合、次のようなエラーダイアログが表示されます(他のダイアログが表示される場合もあります)。
このようなダイアログが出た場合には、ドライバ名、サーバ名、ユーザ名、パスワード、データベース名が正しく入力されているかもう一度確認して、
再度接続を試みてください。
このステップまでに作成したアプリケーションをインストールフォルダ内“AP_DATA\Tutorial”にファイル名“データベースアクセ ス1.mzax”として収録してあります。
データベースに接続ができましたので、今度はデータベースを検索してみましょう。
『データベースアクセス』コンポーネントでは次の手順で、検索を実行し結果を得ることができます。
検索実行:SQL 文(文字列)を引数としてメソッド『SQL 文を実行する(String)』を実行する
検索結果:テーブルデータがデータ生成イベントの内包データとして返ってくる
はじめに、検索を実行する複合コンポーネント「データベース検索フレーム」を作成します。
コンポーネント名 | 必要数 | カテゴリー | コンポーネントキー/テキスト |
---|---|---|---|
フレーム | 1 | 画面構成部品>フレーム | データベース検索 |
テーブル | 1 | 画面構成部品>テーブル | |
パネル | 1 | 画面構成部品>パネル | |
テキストフィールド | 1 | 画面構成部品>テキスト | |
ボタン | 1 | 画面構成部品>ボタン | 実行 |
イベント生成 | 1 | 処理部品>イベント |
ここでは、[実行]ボタンが押されたときに、テキストフィールド(ID:3-4)に記述されたSQL 文を、「デー
タ設定イベント」に内包させて、複合コンポーネント外部に伝播することにします。
ボタンから発生するイベ ントは「アクションイベント」ですので、「データ設定イベント」を生成しなければなりません。
任意のイベン トを生成するコンポーネントが[イベント生成]コンポーネントです。
「データ設定イベント」を生成するに はメソッド『データ設定イベントの発生(Object, int)』を用います。
第1 引数と第2 引数は次のとおりです。
第1 引数:設定データ(データ設定イベントに内包されるデータ)
第2 引数:イベント番号 [実行]ボタンが押されたときに、テキストフィールド(ID:3-4)に記述されたSQL 文を、「データ設定イベ
ント」に内包し、複合コンポーネント外部に伝播するように、次のようにコンポーネント間を接続します。
また、フレームが閉じられたことを複合コンポーネントの外部に伝播するための接続も行っておきます。
ただ し、イベント番号は“0”に設定します。
コンポーネント | メソッド | 変更メソッド名 |
---|---|---|
フレーム | フレームを表示する() | 同左 |
フレーム | フレームを閉じる() | 同左 |
テーブル | テーブルデータを設定する(PFObjectTable) | 同左 |
注意!!!
このステップまでに作成したアプリケーションをインストールフォルダ内“AP_DATA\Tutorial”にファイル名“データベー
スア クセス 2.mzax”として収録してあります。
また、複合コンポーネントを用いないアプリケーション作成例についてもファイル名“データベースアクセス
0.mzax”として収録してあります。
注意:データベースの種類や設定によっては、検索結果に日本語が含まれる場合、文字化けする場合があります。
この場合、使用する文字コードを 指定することにより解決する場合があります。
MySQLの場合には、データベース接続フレームのデータベース名の欄に、使用する文字コードをデータベース名とともに“データベース
名?useUnicode=true& characterEncoding=SJIS”のように記述し、再接続します。
すなわち、データベースアクセスコンポーネントのメソッド「データベースに接続する(String, String, String,
String)」の第2引数(データベースの
URL)に“jdbc:mysql://ホスト名/データベース名?useUnicode=true&characterEncoding=SJIS”と設定され
ることになります。
詳細は各データベ ースの解説書をご覧下さい。
これまでの画面では、データベースがどのように構成され、どういうテーブルが存在するかわかりませんでした。
そのため、インストール時に覚えていたデータベース名とテーブ ル名を使用して検索を実行しました。
このステップではデータベースの構造がツリーで表示され、ツリー中のテーブル名をクリックしたときに、
データが自動的に表示される便利な機能を追加します。
『データベースアクセス』コンポーネントにはデ ータベースのツリー構造を得る便利なメソッドが用意されています。
そのメソッドは『getDatabaseTree()』です。
コンポーネント名 | 必要数 | カテゴリー |
---|---|---|
ツリー | 1 | 画面構成部品>ツリー |
コンポーネント | メソッド | 変更メソッド名 |
---|---|---|
ツリー | ツリーデータを設定する | 同左 |
データベース接続フレームの[接続]ボタンを押してデータベースに接続後、次の図のようにデータベースの構成が表示されるはずです。
ここまでの手順で作成したアプリケーションをインストールフォルダ内“AP_DATA\Tutorial”にファイル 名“データベースアクセス3.mzax”として収録してあります。
ここまでの状態でツリーのノードを開いてテーブル名をクリックしても何も起こりません。
このステップの後半では、テーブル名がクリックされた際にテーブルの内容を右側の[テーブル]に表示するようにします。
表示までにはいくつかの段階が必要です。
はじめに、[ツリー]がクリックされた際に、テーブル名を取得する必要があります。
またこの際、マウスクリックで自由にデータベースを変更できることから、データベースを指定しなおす必要があり、データベース名も同時に取得する
必要があります。次に、テーブル名から、このテーブルのデータ全体を取得するSQL 文を生成し(テーブル名が「project
の場合」、「SELECT* FROM project」)、[データベースアクセス]で検索を実行する必要があります。
コンポーネント名 | 必要数 | カテゴリー | コンポーネントキー |
---|---|---|---|
ツリーノード格納変数 | 1 | 処理部品>変数 | |
リスト格納変数 | 1 | 処理部品>変数 | |
文字列格納変数 | 3 | 処理部品>変数 | データベース名 テーブル名 select文 |
比較演算 | 2 | 処理部品>条件制御 | 要素数2以上 要素数3以上 |
ツリー(ID:3-7)のノードが選択されたとき、データ選択イベントが発生し ます。
このイベントには選択されたツリーのノードが内包されています。
このノードをツリーノード格納変 数(ID:3-8)に格納します。
ツリーノード格納変数を用いると、ノードのパス(ルートからこのノードに至るまでに通過するノードのリスト)をリストとして取得することができま
す。
このリストの要素数が“2”以上であれば、このリストのインデクス“1”の要素としてデータベース名が取得でき、要素数が“3”以上であればイン
デクス“2”の要素としてテーブル名も取得できます。
これらデータベース名、テーブル名を文字列格納変数(ID:3-12,3-13)にそれぞれ格納します。
リストの要素数の判定は、2つの比較演算(≧) (ID:3-10,3-11)にリストの要素数を設定して実行します。
文字格納変数(ID:3-14)を使用して、取得したテ ーブル名からSQL
文を作成し、イベント生成(ID:3-6)を介して外部に伝播し、データベースアクセス(ID:2) で検索を実行します。
このときのイベント番号は以前に設定したイベントと区別するため“1”とします。
また、外部から選択されたデータベース名を取得できるように、[文字列格納変数(データベース名)]のメソッドを公開します。
コンポーネント | メソッド | 変更メソッド名 |
---|---|---|
文字列格納変数(データベース名) | 文字列を取得する | データベース名を取得する |
保存し、実行してみましょう。
ツリーのノードを選択した際にテーブルの内容が表示されます。
このステップまでに作成したアプリケーションをインストールフォルダ内“AP_DATA\Tutorial”にファイ
ル名“データベースアクセス4.mzax”として収録してあります。
注意:MySQL を用いる場合、ツリーに「mysql」と言うデータベースが表示されます。このデータベース中の テーブルはMySQL
が管理しているため、データの操作はお勧めできません。
操作 |
イベント番号 |
---|---|
ノードの更新 | 0 |
ノードの追加 | 1 |
ノードの削除 | 2 |
ノードの移動 | 3 |
ノードを開く | 4 |
ノードを閉じる | 5 |
コンポーネント名 | 必要数 | カテゴリー |
---|---|---|
論理値(Boolean)格納変数 | 1 | 処理部品>変数 |
コンポーネント | メソッド | 変更メソッド名 |
---|---|---|
論理値(Boolean)格納変数 | 文字列により論理値(Boolean)を設定する(String) | ツリーノードの移動可否を設定する(String) |
操作 |
イベント番号 |
---|---|
セルの更新 | 0 |
1行更新 | 1 |
1列更新 | 2 |
単一行追加 | 10 |
複数行追加 | 11 |
単一列追加 | 12 |
複数列追加 |
13 |
1行削除 | 20 |
全「行削除 | 21 |
1列「削除 | 22 |
全列削除 | 23 |
全行全列削除 | 24 |
コンポーネント名 | 必要数 | カテゴリー |
---|---|---|
論理値(Boolean)格納変数 | 1 | 処理部品>変数 |
コンポーネント | メソッド | 変更メソッド名 |
---|---|---|
論理値(Boolean)格納変数 | 文字列により論理値(Boolean)を設定する(String) | テーブルセルの更新可否を設定する(String) |
終了時に[ツリー]と[テーブル]、[テキストフィールド]をクリアします。
また、必ず[データベース]からの切断をしておきます。
コンポーネント名 | 必要数 | カテゴリー | コンポーネントキー |
---|---|---|---|
サブルーチン | 1 | 処理部品>サブルーチン | 終了処理 |
コンポーネント | メソッド | 変更メソッド名 |
---|---|---|
サブルーチン(終了処理) | 処理を呼び出す() | 終了処理を呼び出す() |