ここまでQueryクラスによる複数データの取得方法を見てきました。Queryクラスには、集計や一括更新といった機能もありますので、これらについて見ていきます。

集計メソッドの呼び出し

特定のカラムの値を集計するには、「Get~」という名前で定義されている集計メソッドを呼び出します。引数には、対象とする列の名前を指定します。

Queryクラスの集計メソッドの呼び出し例

object avg = 書籍.Query().GetAverage(書籍.Columns.価格); //書籍の平均価格 object max = 書籍.Query().GetMax(書籍.Columns.価格); //価格の最大値 object min = 書籍.Query().WHERE(書籍.Columns.出版社ID, 1) .GetMin(書籍.Columns.価格); //価格の最小値(出版社ID=1の中で) object sum = 書籍.Query().GetSum(書籍.Columns.価格); //価格の合計 int count = 書籍.Query().GetCount(書籍.Columns.発売日); //発売日列がNullでないレコードの件数 int allCount = 書籍.Query().GetRecordCount(); //全レコードの件数

取得列と取得行の設定

また、表示列を絞り込だり、重複を排除(DISTINCT)したり、取得行数(ページング)を絞り込んだりすることもできます。

表示列と取得行の絞り込み

//(1)表示列の絞り込みと重複の排除(DISTINCT) GridView1.DataSource = 書籍.Query() .DISTINCT() .ORDER_BY(書籍.Columns.出版社ID, "ASC") .SetSelectList(書籍.Columns.出版社ID + "," + 書籍.Columns.価格) .ExecuteReader(); //(2)先頭5レコードを取得 GridView2.DataSource = 書籍.Query() .SetTop("5") .ExecuteReader(); //(3)ページング(2ページ目のデータを取得:1ページ5レコード) Query q = Ss.書籍.Query(); q.PageSize = 5; q.PageIndex = 2; GridView3.DataSource = q.ExecuteReader();

(1)のように表示する列を絞り込みたい場合は、SetSelectListメソッド(SelectListプロパティ)を使用します。列が複数ある場合はカンマで区切ります。また、DISTINCTメソッドを呼び出すとデータの重複を排除できます。

(2)のように取得するデータ件数を設定するには、SetTopメソッド(Topプロパティ)を使用します。

(3)のようにページングを行いたい場合には、PageSizeプロパティとPageIndexプロパティを設定します。それぞれ1ページあたりのレコード数と、取得したいページ番号を設定します。

複数件データの更新/削除

Queryクラスを使って、複数データの更新と削除を行うこともできます。

複数件データの更新と削除

//出版社IDが2のデータの価格を2000円に更新 Query upd = 書籍.Query(); upd.AddUpdateSetting(書籍.Columns.価格, 2000); upd.WHERE(書籍.Columns.出版社ID, 2); upd.Execute(); //出版社ID=5のデータを削除(物理削除) Query del = 書籍.Query(); del.QueryType = QueryType.Delete; del.WHERE(書籍.Columns.出版社ID, 5); del.Execute();

更新の場合は、AddUpdateSettingメソッドを使って、値を更新したい列名とその値を設定します。削除の場合は、QueryTypeプロパティにDeleteを設定します。あとはWHERE句を設定してから、Executeメソッドを実行します。これで、複数データの更新と削除ができます。

QueryクラスのSQLの確認方法

QueryクラスのGetSqlメソッドを呼び出すと、そのQueryクラスで実行するSQLを取得することができます。どのようなSQLが実行されるのかを知りたい時に利用すると良いでしょう。