0

C# と SQL Server を使用してデータベースからデータを取得し、ページロード時にページにいくつかのラベルを設定しています。情報は、一連の情報を 1 行で返す SQL ビューから取得されます。例えば:

SELECT 'car' AS product, 12 As daysUntilEOM, '2010-01-01' AS LastHoliday, 23.7 AS Length

返される行は常に 1 行だけです。

私のプロジェクトの残りの部分はLINQを使用しており、私はもともとその道をたどり始めましたが、これのために一度だけ使用するオブジェクトを作成し、すべての値をキー値としてオブジェクトに割り当てますペアにしてから、それらをラベル テキストに再割り当てしますか? 無意味なコーディングが多いようです。

データリーダーを使用しても同じ問題があるようです。

私が見ることができる最も簡単な解決策 (つまり、最小のコード) は、dataAdapter を使用してデータセットを埋め、データセットを DAL からページに戻し、ラベルに直接割り当てることです。しかし、1 行のデータの場合、これはトラックを使って 1 つのトマトを運ぶようなものです。

最初の列だけでなく行全体を返す ExecuteScalar のようなものはありますか? それとも、DataAdapter のコーディングの容易さだけで十分であり、オーバーヘッドについて心配する必要はありませんか?

ありがとう!

4

2 に答える 2

5

フラグを呼び出しExecuteReaderて渡す必要があります。CommandBehavior.SingleRow

カップリングを避けるために、次のように DataReader を辞書に変換できます。

return Enumerable.Range(0, reader.FieldCount)
                 .ToDictionary(reader.GetName, reader.GetValue);
于 2010-11-26T03:13:25.163 に答える
0

ExecuteScalar は、行ではなくスカラー値を返します。コマンド オブジェクトを使用した DataAdapter (場合によっては、SQL ステートメントを実行するのではなく、ストアド プロシージャにパラメーターを渡すこともできます) は問題ありません。

于 2010-11-26T03:15:56.110 に答える