3

自動インクリメント整数を持つ主キーである列id, name, addressを持つ SQL Server のテーブルがあります。id

私は2つのボタンがあるwinformsアプリケーションにフォームを持っています:

1 previous
2 next

機能が必要です。つまり、前のボタンをクリックすると、選択した行の前の行をテーブルから取得できます。同様に、次のボタンをクリックすると、選択した行の次の行を取得できます....

私のフォームは次のようになります

ここに画像の説明を入力

4

4 に答える 4

3

行IDが現在のIDよりも大きい/小さいトップ1行を選択できるため、IDが123の場合、IDが123より大きいトップ1(最初)の行を選択できます。 124. 前の行と同じ。

PK であるため、行を並べ替える必要があるため、並べ替えコマンドを追加する必要はありません。もちろん、最初の行から前の行を尋ねるとき、または最後の行の次の行を尋ねるときは注意が必要です。

declare @CurrentID int = 123;
select top 1 * from [MyTable] where [MyTable].[ID] > @CurrentID;

もちろん、キャッシュ メカニズムを使用して実装し、ボタンを押すたびにデータベース クエリを実行しないようにすることをお勧めします。これにより、一連の行をアプリケーション メモリにクエリし、インデックスを使用して前または次の項目に移動できます。

于 2012-07-19T09:01:42.150 に答える
1

各行をオブジェクトにマップし、リストを作成してリストを反復処理します。これにより、DBを頻繁に呼び出す必要がなくなります。もちろん、データベースで通常発生する変更がたくさんある場合、このアプローチは適切ではありません。

于 2012-07-19T09:14:01.337 に答える
1

必要なのはページネーションだけです。ポイント4を参照http://beyondrelational.com/modules/2/blogs/70/posts/10802/multipurpose-rownumber-function.aspx

于 2012-07-19T09:05:52.870 に答える
1

次へボタン

select * from table where id=id_val+1

前のボタン

select * from table where id=id_val-1

いずれかのボタンをクリックした後、値をという変数に保存する必要があります

id_val
于 2012-07-19T09:10:47.803 に答える