PC-KEIBA Framework
Step7:SqlBuilder の使い方
当コーナーでは「Microsoft Visual Basic 2008 Express Edition」による「PC-KEIBA Framework」のセットアップ手順 および オリジナル競馬ソフトの開発手順について説明します。 開発環境に Visual C# または Visual Studio 2005(.NET Framework 2.0)を選択する場合においても、基本的な手順に変わりはありません。
Development Guide
SqlBuilder の使い方
この節章では「SqlBuilder」の使い方について説明します。「SqlBuilder」とは「PC-KEIBA Framework」が提供する SQL 作成を支援するクラスです。
今回は「JVD_RACE_SHOSAI」テーブルのデータを取得する SQL文 を作成するための手順を紹介します。
「SqlBuilder」で作成した SQL文 を、データベースで実行するコードを作成します。
ソリューション エクスプローラ上の プロジェクト を右クリックして、[ 追加 ] → [ クラス ] を選択します。

「クラス」を選択します。今回の例では、ファイル名を初期値の「Class1.vb」にします。
ファイル名を入力したら「追加」ボタンをクリックします。

プロジェクトに「Class1」が追加されました。

名前空間のインポート
ここまでの手順を完了したら、ソースファイルの先頭に今回の説明で使用するクラスが含まれている名前空間をインポートします。
目的のクラスが、どの名前空間に配置されているかについては「クラスライブラリ リファレンス」をご覧ください。
[Visual Basic]
Imports Com.Pckeiba.Db
Imports Com.Pckeiba.DbTables.Jravan
Imports Com.Pckeiba.Sql
[Visual C#]
using Com.Pckeiba.Db;
using Com.Pckeiba.DbTables.Jravan;
using Com.Pckeiba.Sql;
Class1 に「コンストラクタ」(11〜17行目)と 「GetRaceShosaiDataTable」メソッド(19〜30行目)を記述します。「GetRaceShosaiDataTable」メソッドは DataTable オブジェクト を返す関数です。

「GetRaceShosaiDataTable」メソッドに以下の 3行を記述します。
34行目の End Function で緑色の波線(警告)が出ていますが、今は無視しておいてください。
[Visual Basic]
Dim sql As New SelectSqlBuilder(db)
Dim t1 As New JvdRaceShosaiDbTable()
[Visual C#]
SelectSqlBuilder sql = new SelectSqlBuilder(db);
JvdRaceShosaiDbTable t1 = new JvdRaceShosaiDbTable();
この 3行(30〜32行目)が「SqlBuilder」クラスを利用するための基本形となります。
30行目:アプリケーションが使用するデータベース情報(IDatabase オブジェクト)を取得します。
31行目:SQL SELECT文を作成する「SelectSqlBuilder」クラスのインスタンスを取得します。
32行目:「JVD_RACE_SHOSAI」テーブルの項目定義を取得します。
続いて、SQL文を作成します(34〜41行目)。

34〜38行目:取得する項目をセットします(SELECT 句)。
39行目:テーブル名を指定します(FROM 句)。
40行目:検索条件を指定します(WHERE 句)。
41行目:検索結果の表示順を指定します(ORDER BY 句)。
[Visual Basic]
sql.Select.Add(t1.KeibajoCode)
sql.Select.Add(t1.KaisaiKaiji)
sql.Select.Add(t1.KaisaiNichiji)
sql.Select.Add(t1.RaceBango)
sql.From.Add(t1.TableName)
sql.Where.Equal(t1.DataKubun, "7")
sql.OrderBy.Asc(t1.RaceCode)
[Visual C#]
sql.Select.Add(t1.KeibajoCode);
sql.Select.Add(t1.KaisaiKaiji);
sql.Select.Add(t1.KaisaiNichiji);
sql.Select.Add(t1.RaceBango);
sql.From.Add(t1.TableName);
sql.Where.Equal(t1.DataKubun, "7");
sql.OrderBy.Asc(t1.RaceCode);
上記のコードによって生成される SQL文 は、以下のようになります。
KAISAI_NENGAPPI,
KEIBAJO_CODE,
KAISAI_KAIJI,
KAISAI_NICHIJI,
RACE_BANGO
FROM
JVD_RACE_SHOSAI
WHERE
DATA_KUBUN = '7'
ORDER BY
RACE_CODE ASC
SQL の規格はデータベースによって異なります。「SqlBuilder」は、各データベースに適応した書式で SQL文 を自動生成するためのクラスです。
「SqlBuilder」には上記のメソッド以外にも、様々なパターンの SQL文 作成に対応するためのメソッドを用意しています。
「PC-KEIBA Framework」利用して競馬ソフトウェアを作成する、あるいは初めから自作する、いずれの場合においても、データベースアプリケーションを作成する場合には SQL を学習する必要があります。
SQL の詳細についてはインターネットや書籍などを参考にしてください。
最後は、データベースへの接続方法を説明します。

46行目:Try ブロック 内でデータベース接続を開きます。
47行目:データベースに対して実行する SQL文 をセットします。
50行目:検索結果を DataTable オブジェクト で取得します。
検索結果を IDataReader オブジェクト で取得したい場合は ExecuteReader メソッドを使用します。
54行目:Finally ブロック 内でデータベースへの接続を閉じます。
[Visual Basic]
'' データベースに接続します。
db.Open()
db.CommandText = sql.GetSql()
'' SQL ステートメントを実行します。
Return db.ExecuteQuery()
Finally
'' データベースへの接続を閉じます。
db.Close()
End Try
[Visual C#]
{
// データベースに接続します。
db.Open();
db.CommandText = sql.GetSql();
// SQL ステートメントを実行します。
return db.ExecuteQuery();
}
finally
{
// データベースへの接続を閉じます。
db.Close();
}
SqlBuilder の使い方 は以上です。