自動インクリメント整数を持つ主キーである列id, name, address
を持つ SQL Server のテーブルがあります。id
私は2つのボタンがあるwinformsアプリケーションにフォームを持っています:
1 previous
2 next
機能が必要です。つまり、前のボタンをクリックすると、選択した行の前の行をテーブルから取得できます。同様に、次のボタンをクリックすると、選択した行の次の行を取得できます....
私のフォームは次のようになります
行IDが現在のIDよりも大きい/小さいトップ1行を選択できるため、IDが123の場合、IDが123より大きいトップ1(最初)の行を選択できます。 124. 前の行と同じ。
PK であるため、行を並べ替える必要があるため、並べ替えコマンドを追加する必要はありません。もちろん、最初の行から前の行を尋ねるとき、または最後の行の次の行を尋ねるときは注意が必要です。
declare @CurrentID int = 123;
select top 1 * from [MyTable] where [MyTable].[ID] > @CurrentID;
もちろん、キャッシュ メカニズムを使用して実装し、ボタンを押すたびにデータベース クエリを実行しないようにすることをお勧めします。これにより、一連の行をアプリケーション メモリにクエリし、インデックスを使用して前または次の項目に移動できます。
各行をオブジェクトにマップし、リストを作成してリストを反復処理します。これにより、DBを頻繁に呼び出す必要がなくなります。もちろん、データベースで通常発生する変更がたくさんある場合、このアプローチは適切ではありません。
必要なのはページネーションだけです。ポイント4を参照http://beyondrelational.com/modules/2/blogs/70/posts/10802/multipurpose-rownumber-function.aspx
次へボタン
select * from table where id=id_val+1
前のボタン
select * from table where id=id_val-1
いずれかのボタンをクリックした後、値をという変数に保存する必要があります
id_val