はじめに
この記事は日本語プログラミング言語「プロデル」アドベントカレンダー2023の初日向けの記事です。
と言ってもこの記事を書いているのは2023/12/02です。初日と12/25の記事枠は若干特別感があるみたいで少し他の方用に空けていたのですが、予約は特にないまま昨日は仕事が忙しくて記事を投稿しないまま本日となってしまいました。
この記事のお題は「プロデルでデータベースSQLServer2022にクエリーしてみる(ステップ1)」です。ステップ1ということは例によって少しシリーズ化した記事にする予定です。これで万が一本アドベントカレンダーに他に参加者がない場合でも乗り切る覚悟でございます。
この記事内容の作業環境
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
お題のデータべース
こんなテーブル構成のデータベースを作成してみました。
データベース名は「日本語プログラミング言語」です。
お題のソースコード
プロデル
※コンソール
【SQLServer:SQLServerデータベース】
【クエリー文字列:文字列】は、「
SELECT LN.言語名,LN.公開年,LN.よみがな,SLN.言語名 AS 姉妹言語名
FROM 言語名 AS LN
LEFT JOIN 姉妹言語 AS SL ON LN.言語ID=SL.言語ID
LEFT JOIN 言語名 AS SLN ON SL.姉妹言語ID=SLN.言語ID
WHERE
LN.言語ID IN (@id1, @id2)
」
バインド値は{@id1=6,@id2=8}
メイン実行する。
メイン実行する手順
接続構成する
SQLServerへ接続する
SQLServerからクエリー文字列をバインド値として取得して、結果とする
結果の内容をコンソールへ表示して改行する
SQLServerから切断する
終わり
接続構成する手順
SQLServerというSQLServerデータベースを作る
SQLServerのデータソースは「DESKTOP-078KPRA\SQLEXPRESS」
SQLServerのデータベースは「日本語プログラミング言語」
SQLServerのWindows認証は、○
終わり
↑こちらの詳しい説明を拝見して適当に書いています。「結果」はプロデルデザイナで参照すると動的配列のようです。Java環境でmyBatisとか使ってクエリーするときは結果セットのメンバーに応じたクラスを定義しておかなければならなかったりしますが、そういう面倒のない環境はよいです。ADO.NETのリザルトセットオブジェクトを彷彿とさせる使い勝手ですね。
実行結果
それでは実行してみましょう。コンパイルはプロデルデザイナで実行ファイルの作成するで行っています。
C:\produire\sample>mssql.exe
{{プロデル,2007,ぷろでる,スミレ},{プロデル,2007,ぷろでる,スミレ畑},{スミレ,2018,すみれ,プロデル},{スミレ,2018,すみれ,スミレ畑}}
C:\produire\sample>
コンソール出力にいきなり放り込んでもコンパイルエラーにならなかったのでどんな風に出力されるかどきどきしていたのですが、こんな感じで出てくるのですね。すごいです。ちょっとわかりやすくするため結果を改行してみます。
{
{プロデル,2007,ぷろでる,スミレ},
{プロデル,2007,ぷろでる,スミレ畑},
{スミレ,2018,すみれ,プロデル},
{スミレ,2018,すみれ,スミレ畑}
}
投入したクエリー文をここで説明しておきます。
SELECT LN.言語名,LN.公開年,LN.よみがな,SLN.言語名 AS 姉妹言語名
FROM 言語名 AS LN
LEFT JOIN 姉妹言語 AS SL ON LN.言語ID=SL.言語ID
LEFT JOIN 言語名 AS SLN ON SL.姉妹言語ID=SLN.言語ID
WHERE
LN.言語ID IN (@id1, @id2)
[言語名]テーブルと[言語名]テーブルを[姉妹言語]テーブルを介して左外部結合しています。
WHERE句で「プロデル」と「スミレ」の言語IDを指定しています。
「プロデル」の姉妹言語は「スミレ」と「スミレ畑」
「スミレ」の姉妹言語は「プロデル」と「スミレ畑」
という結果が返っていますね。
プレースフォルダにも対応しているのに感動しました。
おわりに
今回は結果セットをさらっとコンソール出力したので、内部的にはここの項目型は文字列変換されていると推察されます。次回ではプロデルの結果セットでDBの型情報がどのように保持されているのか少し探ってみたいと思います。