競馬ソフト開発ガイド

Step7:SqlBuilder の使い方

この節章では「SqlBuilder」の使い方について説明します。「SqlBuilder」とは「PC-KEIBA Framework」が提供する SQL 作成を支援するクラスです。
今回は「JVD_RACE_SHOSAI」テーブルのデータを取得する SQL文 を作成するための手順を紹介します。

SqlBuilder」で作成した SQL文 を、データベースで実行するコードを作成します。
ソリューション エクスプローラ上の プロジェクト を右クリックして、[ 追加 ] → [ クラス ] を選択します。


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


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



名前空間のインポート

ここまでの手順を完了したら、ソースファイルの先頭に今回の説明で使用するクラスが含まれている名前空間をインポートします。
目的のクラスが、どの名前空間に配置されているかについては「クラスライブラリ リファレンス」をご覧ください。

サンプルコード

[Visual Basic]

Imports System.Data
Imports Com.Pckeiba.Db
Imports Com.Pckeiba.DbTables.Jravan
Imports Com.Pckeiba.Sql

[Visual C#]

using System.Data;
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 db As IDatabase = New DatabaseFactory().GetDatabase()
Dim sql As New SelectSqlBuilder(db)
Dim t1 As New JvdRaceShosaiDbTable()

[Visual C#]

IDatabase db = new DatabaseFactory().GetDatabase();
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.KaisaiNengappi)
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.KaisaiNengappi);
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文 は、以下のようになります。

SELECT
  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]

Try

    '' データベースに接続します。
    db.Open()
    db.CommandText = sql.GetSql()

    '' SQL ステートメントを実行します。
    Return db.ExecuteQuery()

Finally
    '' データベースへの接続を閉じます。
    db.Close()
End Try

[Visual C#]

try
{
    // データベースに接続します。
    db.Open();
    db.CommandText = sql.GetSql();

    // SQL ステートメントを実行します。
    return db.ExecuteQuery();
}
finally
{
    // データベースへの接続を閉じます。
    db.Close();
}


SqlBuilder の使い方 は以上です。


競馬ソフト開発ガイド