QA@IT

抽出結果が1行の場合のデータの取り出しについて

8587 PV

VisualStudio2013 C# asp.netを使用してWebフォームを開発しています。

現在、DBから抽出した結果をDataTableに入れています。
抽出条件がUniqueのみで1行しか表示されないため、DataTableよりもよい方法がないかと探していましたが、
なかなか見つけられなかったため、投稿させていただきました。

DataReaderを使おうと思ったのですが、DataReaderを閉じる前にSQLを発行する必要があるため、
『コマンドに関連付けられている DataReader が既に開かれています。』のエラーが出てしまいます。
抽出した結果を変数に入れてみたところ、ちゃんと処理は動くのですが記述が長くなってしまいます。

Listも使えるのでは?と思ったのですがうまく使えず断念しました。

プログラミング初心者なので分からないことが多く困っています。お知恵をお貸しいただけたらうれしいです。

  • ASP.NET と言っても色々あるのですが、Web Forms アプリと理解していいのですか? サーバーコントロールに何を使っているか、できればコードを開示してください。あと、開発環境(OS, .NET, Visual Studio のバージョン、DB サーバーは何かとそのバージョン・エディションなど)を書いてください。 -

回答

コメントに対する返事がないので勝手に想像して回答を書きます。

抽出条件がUniqueのみで1行しか表示されないため、DataTableよりもよい方法がないかと探していましたが、

何に(=どういうサーバーコントロールに)抽出結果を表示してどういう操作を行うかにもよりますが、例えば DetailsView に表示してレコードの編集・更新を行うような場合は、DataTable が良いかとか DataReader が良いかとかの話は関係ないと言ってもいいと思います。

SqlDataSource のようなデータソースコントロールを組み合わせて使いましょう。それ以外に良い案はないと思います。

具体的には以下の記事のサンプルコードを見てください。(最新版は翻訳がダメなので、VS2010 のものを紹介しています)

DetailsView クラス
https://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.detailsview(v=vs.100).aspx

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。