- PR -

SQLのSELECTで指定分の数のみの読み出し

1
投稿者投稿内容
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-09-13 22:21
お世話になります。

SQLでSELECT文で単に先頭から10件、20件とかその実行時に読み込みたい
のですが、どのように書いたらいいのでしょうか?
実際には、WHEREやOrder Byを指定してよみだします。
例えば、下記のようにしたとき、そこにあるすべてを読んできます。これを先頭からWHEREとかの条件でなく数で読み込みを制限したいのですがどのようにしたらできますか?
教えてください。
ASP.NET C#
コード:
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    string sqlStr = string.Format("SELECT KairanID, MenuID, KairanMei, ReleaseFlg, Hiduke, DelFlg FROM KairanMaster Order BY KairanID");
    SqlConnection conn = new SqlConnection(connStr);
    DataSet ds = new DataSet();

    try
    {
        SqlDataAdapter adapter = new SqlDataAdapter(sqlStr, conn);
        num = adapter.Fill(ds);
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }
    if (ds.Tables.Count > 0)
    {
        :
        :
    }
    conn.Dispose();
}

shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2008-09-13 23:05
limitとか、SQLServerならtopとか・・

[ メッセージ編集済み 編集者: shimix 編集日時 2008-09-13 23:07 ]
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-09-14 00:19
お世話になります。

SQL Server を使用しているため TOP で目的とすることができました。
ありがとうございます。
ちなみに、ですが、先頭から5番目から10番という途中を抽出することはできますか?
よろしければ教えてください。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-09-14 03:11
さかもとです。

ROWNUMBERを使えば何とかなるかも・・・。

http://blog.livedoor.jp/akf0/archives/51389113.html

このような感じで。
試していないのでできなかったらすいません。

ページングなどの処理でコードから指定できるなら(SQL文一発でなければ)
http://www.sqlpassj.org/bunkakai/web/series/ado/04.aspx#l4_5

こういう手段もあります。



_________________
------------------------------------------
拝啓、さかもとと申します♪
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-09-14 11:50
お世話になります。

とっても興味深いページをご紹介いただきましてありがとうございます。
内容が深そうなので、ちょっと大変そうですが努力の甲斐がありそうです。

ありがとおうございました。
タコツボ
常連さん
会議室デビュー日: 2004/01/20
投稿数: 22
お住まい・勤務地: 京都・大阪
投稿日時: 2008-09-17 10:39
既に解決されているかとは思いますが遅ればせながら。

Fillメソッドには、int startRecord, int maxRecords が付いたオーバーロードが用意されています。開始位置と最大取得件数を指定するだけで、カスタムページング等がお手軽にできた覚えがあります。パフォーマンスについては検証したことがないので場合により不都合があるのかもしれませんが。

ご参考まで。
1

スキルアップ/キャリアアップ(JOB@IT)