はじめに
今回はプロデルでデータベースSQLServer2022のステップ4です。前回トランザクションを構成して更新途中で例外を発生させてロールバックを確認しましたが、今回はデータ表を使ってみます。
この記事内容の作業環境
Windows11 Pro 22H2
CPU Intel(R) Core(TM) i3-5005U 2.00 GHz
Produire Version 2.0.1197 for Windows
SQL Server 16.0.1000.6 Express Edition
SQL Server Management Studio 19.2.56.2
お題のデータべース
こんなテーブル構成のデータベースを作成しております。
データベース名は「日本語プログラミング言語」です。
お題のデータ表とは
最近は実装していませんが、少し前までは.NET環境のデータベース操作環境といえばADO.NETというテーブルの物理的なスキーマに対応したデータエンティティのクラスインスタンスを動的に自動的にクリエートしてくれる便利で生産性の高い環境があった(過去形なのか?)のですが、プロデルの「データ表」はまさにADO.NETの結果セットインスンスタンスを彷彿とさせる印象でした。
お題のソースコード
プロデル
前回のソースコードを生かして、今回は行いませんが次回あたりはデータ表を使ったデータベースの更新も行いたいため、トランザクションの実装は残しています。(今回は結果セットの取得までです。)
※コンソール
【conn:SQLServerデータベース】
【sql1:文字列】は、「SELECT LN.* FROM 言語名 AS LN WHERE LN.言語ID IN (@p1,@p2)」
メイン実行する。
メイン実行する手順
接続構成する
connへ接続する
照会結果をコンソール出力する
connでトランザクションを開始する
「トランザクションを開始する」をコンソールへ表示して改行する
例外監視
トランザクションを実行する
connでトランザクションを完了する
「トランザクションをコミットする」をコンソールへ表示して改行する
発生した場合
connでトランザクションを取り消す
「トランザクションをロールバックする」をコンソールへ表示して改行する
エラーを、コンソール出力する
監視終わり
照会結果をコンソール出力する
connから切断する
終わり
トランザクションを実行する手順
param1は{@p1=6,@p2=8}
言語名というデータ表を作る
言語名の名前は「言語名」
connからsql1をparam1としてデータ表として取得する、言語名とする
言語名の2列目を一覧で取得したものを、コンソールへ表示して改行する
言語名から「言語名 LIKE '%プ%'」を選択して結果とする結果すべての一覧をコンソールへ表示して改行する
言語名の一覧のすべての行についてそれぞれ繰り返す
行をコンソールへ表示して改行する
繰り返し終わり
connで、言語名を更新する
終わり
照会結果をコンソール出力する手順
param1は{@p1=6,@p2=8}
connからsql1をparam1として取得して、結果3とする
結果3の内容をコンソールへ表示して改行する
終わり
【エラー】を、コンソール出力する手順
「エラー番号:」& エラーの番号& 「 エラー内容:」& エラーのメッセージをコンソールへ表示して改行する
終わり
接続構成する手順
connというSQLServerデータベースを作る
connのデータソースは「DESKTOP-078KPRA\SQLEXPRESS」
connのデータベースは「日本語プログラミング言語」
connのWindows認証は、○
終わり
↑こちらの詳しい説明を拝見して書いています
実行結果
それでは実行してみましょう。コンパイルはプロデルデザイナで実行ファイルの作成するで行っています。(コンソール版ランタイム環境)
C:\produire\sample2>mssql4.exe
{{6,プロデル,2007,ぷろでる},{8,スミレ,2018,すみれ}}
トランザクションを開始する
System.Object[]
System.Object[]
System.Object[]
System.Object[]
トランザクションをコミットする
{{6,プロデル,2007,ぷろでる},{8,スミレ,2018,すみれ}}
C:\produire\sample2>
なんか一部動いていない感じ。実際はもう少し悩んだんですが、これは恐らくコンソール版では動かないということはありそうなので、デスクトップ版にしてみることにしました。
お題のソースコード(デスクトップ版)
プロデル
【conn:SQLServerデータベース】
【sql1:文字列】は、「SELECT LN.* FROM 言語名 AS LN WHERE LN.言語ID IN (@p1,@p2)」
メイン実行する。
メイン実行する手順
接続構成する
connへ接続する
照会結果を出力する
connでトランザクションを開始する
「トランザクションを開始する」を表示する
例外監視
トランザクションを実行する
connでトランザクションを完了する
「トランザクションをコミットする」を表示する
発生した場合
connでトランザクションを取り消す
「トランザクションをロールバックする」を表示する
エラーを、出力する
監視終わり
照会結果を出力する
connから切断する
終わり
トランザクションを実行する手順
param1は{@p1=6,@p2=8}
言語名というデータ表を作る
言語名の名前は「言語名」
connからsql1をparam1としてデータ表として取得する、言語名とする
言語名の2列目を一覧で取得したものを、表示する
言語名から「言語名 LIKE '%プ%'」を選択して結果とする結果すべての一覧を表示する
言語名の一覧のすべての行についてそれぞれ繰り返す
行を表示する
繰り返し終わり
connで、言語名を更新する
終わり
照会結果を出力する手順
param1は{@p1=6,@p2=8}
connからsql1をparam1として取得して、結果3とする
結果3の内容を表示する
終わり
【エラー】を、出力する手順
「エラー番号:」& エラーの番号& 「 エラー内容:」& エラーのメッセージを表示する
終わり
接続構成する手順
connというSQLServerデータベースを作る
connのデータソースは「DESKTOP-078KPRA\SQLEXPRESS」
connのデータベースは「日本語プログラミング言語」
connのWindows認証は、○
終わり
実行結果(デスクトップ版)
それでは実行してみましょう。コンパイルはプロデルデザイナで実行ファイルの作成するで行っています。(デスクトップ版ランタイム環境)
動きました!
このメッセージは
「言語名から「言語名 LIKE '%プ%'」を選択して結果とする結果すべての一覧を表示する」で1行選択したところです。すごいです!
おわりに
データベース関連機能をプログラミング言語に個人でここまで実装してしまうのではすごすぎです。次回はデータ表を使ってデータを更新してみます。