none
SqlCommand.SetRangeメソッドまたは,SqlDataReader.Seekメソッド での範囲指定について RRS feed

  • 質問

  • 質問したい点としては,複数列に1つのプライマリーキー制約と1つのインデックス名を設定したTBLに対する,

    SetRangeメソッドやSeekメソッドの動作です。

     

    以下にサンプルコードと一緒に状況を説明いたします。どなたかご存知の方,よろしくお願いいたします。

     

    処理1.複数列に1つのプライマリーキー制約とインデックス名を設定します。

     

         // 複数列(ID, Name, Age)にプライマリーキー制約とインデックス名(idx_sample)を指定

         ALTER TABLE  Sample  ADD CONSTRAINT idx_sample PRIMARY KEY (ID(注4), Name, Age)

     

    処理2.SetRangeやSeekメソッドを発行します。その場合,以下の注1,注2に指定する範囲をどうしたらよいか悩んでおります。

      

         // SetRangeメソッド(インデックスを基にした値の範囲(1~99)を指定)

         SqlCommand.SetRange(DbRangeOptions.InclusiveStart | DbRangeOptions.InclusiveEnd,
                            new object[] { 注1 }, new object[] { 注2 });

      

         または,

         // Seekメソッド(開始インデックスを指定)
         Seek(DbSeekOptions.FirstEqual, new object[] { 注3 });

    上記のようなコードを書き,試しに実行してみると,注1から注3に指定した値は,ID列の値を判定して動作しました。

    動作で納得できない点は,TBLでID列のみがプライマリーキー,インデックスが設定してあれば納得できますが,

    複数列で1つのキーとインデックス名を設定している点です。

     

    注1~注3には,通常,どのような値を指定するのでしょうか。

    よろしくお願いいたします。
    2008年12月20日 8:56

回答

すべての返信