ここまで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が実行されるのかを知りたい時に利用すると良いでしょう。