none
初歩的な質問と気になった事 RRS feed

  • 質問

  • 初歩的ですいません。

    データベースの内容を表示させたりするときに「GridView」など使うと思いますが
    よく書籍やそれに関連するサイトをみますとGridViewとSqlDataSourceセットで使われるのを
    よくみます。


    SqlDataSourceを使わないで手動で処理を書くのとSqlDataSourceをつかって処理を行うのはどちらが
    よいのでしょうか?

    私の場合、コードを記述してDBに接続して書くコンポーネントにバインドするように記述したりしていますが・・・

    私がまだ未熟なものですいません。
    SqlDataSourceを使うメリット使わないメリットを教えていただければありがたいです。



    よろしくお願いします。


    tomotomody
    2009年6月28日 15:18

回答

  • > SqlDataSourceを使わないで手動で処理を書くのとSqlDataSourceをつかって処理を行うのはどちらが
    > よいのでしょうか?

    適材適所で一概には言えないでしょうが、少なくともクラスライブラリが既に備えている機能を自分で実装
    するのはばかばかしいと思います。プロ中のプロが作ったクラスライブラリよりうまく実装できることはない
    でしょうし。

    自分で SqlDataSource の利用方法をよく理解して使い分けるようにするべきと思います。
    2009年6月29日 14:13
  • データ ソース コントロールの概要 なんてページがあります。データベースからデータの取得後に並び替えやフィルタやページング、そしてそれらをキャッシュしてくれるそうです。SqlDataSourceに限らず、コード記述を低減できることもメリットのようです。
    あとはこのページの左ツリーを見ながら適当に読みあさっていけば何かわかるかも。

    # 私自身はGridViewを使ったことがないので…。
    2009年6月28日 21:42
  • SqlDataSourceはASP.NET 2.0で追加されました。それまではトモディーさんがされているように、自分でコードを記述するしかありませんでした。しかし、定型的なコードを毎回書くのは面倒なものです。そこで、基本的なデータベースとの連携をコードを書かなくても実現できるようにしたのがSqlDataSourceです。
    しかし、SqlDataSourceはそういった基本的な定型しか提供しませんから、定型から外れた応用的なことをすることができません。
    なお、あくまで個人的な感想ですが、できるだけSqlDataSourceを使用し、それで無理ならばObjectDataSourceやトモディーさんがされている方法を検討されれば良いと思います。なぜなら、SqlDataSourceが使用できるのであれば、コードを書かない分、開発効率が上がりますし、バグが発生しにくくなるからです。
    簡単ですが、以上からメリット、デメリットが読み取れるのではないかと思います。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年6月29日 0:32
    モデレータ
  • > なぜなら、SqlDataSourceが使用できるのであれば、コードを書かない分、開発効率が上がりますし、バグが発生しにくくなるからです。

    この点は賛成。

    SqlDataSourceを使う場合の大きなデメリットとして、ViewStateにすべてのデータを含んでいる、というのがあります。
    ページングやソーティングが自動でできますが、そのために抽出したすべてのデータをViewStateに持つので、たとえば1万件のデータから10件を表示、といった場合にSqlDataSourceを使っていると動作が重い、という状況が発生したりします。

    ああ、あと、SQL Serverが対象でないと使えない、というのもあるかな。


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    2009年6月29日 1:52
  • SqlDataSourceを使うメリット使わないメリットを教えていただければありがたいです。

    トモディー様

    はじめまして。
    質問への回答と言う訳ではありませんが、個人的には以下の場合にSqlDataSourceを使用します。
    ・プロト作成時、早くお客様に画面イメージ・操作イメージを確認したい場合
    ・社内向けのアプリケーション作成の場合

    これら以外の場合は、仕様変更(データベースが変わる・データベースを使用しないなどの仕様変更)
    に柔軟に対応できるように、SqlDataSourceは使用せず、コード記述により取得したデータソースをGridViewコントロールにバインドする方法を取っております。

    何か参考になれば幸いです。


    MCITP(Database Developer/Database Administrator) MCPD(Web Developer) MCTS(Windows Applications)
    2009年6月29日 2:10

すべての返信

  • データ ソース コントロールの概要 なんてページがあります。データベースからデータの取得後に並び替えやフィルタやページング、そしてそれらをキャッシュしてくれるそうです。SqlDataSourceに限らず、コード記述を低減できることもメリットのようです。
    あとはこのページの左ツリーを見ながら適当に読みあさっていけば何かわかるかも。

    # 私自身はGridViewを使ったことがないので…。
    2009年6月28日 21:42
  • SqlDataSourceはASP.NET 2.0で追加されました。それまではトモディーさんがされているように、自分でコードを記述するしかありませんでした。しかし、定型的なコードを毎回書くのは面倒なものです。そこで、基本的なデータベースとの連携をコードを書かなくても実現できるようにしたのがSqlDataSourceです。
    しかし、SqlDataSourceはそういった基本的な定型しか提供しませんから、定型から外れた応用的なことをすることができません。
    なお、あくまで個人的な感想ですが、できるだけSqlDataSourceを使用し、それで無理ならばObjectDataSourceやトモディーさんがされている方法を検討されれば良いと思います。なぜなら、SqlDataSourceが使用できるのであれば、コードを書かない分、開発効率が上がりますし、バグが発生しにくくなるからです。
    簡単ですが、以上からメリット、デメリットが読み取れるのではないかと思います。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年6月29日 0:32
    モデレータ
  • > なぜなら、SqlDataSourceが使用できるのであれば、コードを書かない分、開発効率が上がりますし、バグが発生しにくくなるからです。

    この点は賛成。

    SqlDataSourceを使う場合の大きなデメリットとして、ViewStateにすべてのデータを含んでいる、というのがあります。
    ページングやソーティングが自動でできますが、そのために抽出したすべてのデータをViewStateに持つので、たとえば1万件のデータから10件を表示、といった場合にSqlDataSourceを使っていると動作が重い、という状況が発生したりします。

    ああ、あと、SQL Serverが対象でないと使えない、というのもあるかな。


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    2009年6月29日 1:52
  • SqlDataSourceを使うメリット使わないメリットを教えていただければありがたいです。

    トモディー様

    はじめまして。
    質問への回答と言う訳ではありませんが、個人的には以下の場合にSqlDataSourceを使用します。
    ・プロト作成時、早くお客様に画面イメージ・操作イメージを確認したい場合
    ・社内向けのアプリケーション作成の場合

    これら以外の場合は、仕様変更(データベースが変わる・データベースを使用しないなどの仕様変更)
    に柔軟に対応できるように、SqlDataSourceは使用せず、コード記述により取得したデータソースをGridViewコントロールにバインドする方法を取っております。

    何か参考になれば幸いです。


    MCITP(Database Developer/Database Administrator) MCPD(Web Developer) MCTS(Windows Applications)
    2009年6月29日 2:10
  • > SqlDataSourceを使わないで手動で処理を書くのとSqlDataSourceをつかって処理を行うのはどちらが
    > よいのでしょうか?

    適材適所で一概には言えないでしょうが、少なくともクラスライブラリが既に備えている機能を自分で実装
    するのはばかばかしいと思います。プロ中のプロが作ったクラスライブラリよりうまく実装できることはない
    でしょうし。

    自分で SqlDataSource の利用方法をよく理解して使い分けるようにするべきと思います。
    2009年6月29日 14:13
  • > 私の場合Sessionでユーザーの情報を格納してますので、SqlDataSource と 手動でコードの
    > 記述を使い分けたいと考えております。

    意味が分かりません。

    もともとの話は、データベースからデータを取得して GridView などに表示するとき、SqlDataSource
    を使うのがよいかどうかという話だったはずですが。

    Session を使う使わないとは関係ないと思いますけど。

    > もしくは、ObjectDataSourceも使用してみたいとお考えです。

    これも Session とは関係ないと思います。どうも話が噛み合っていないようです。質問の内容をクリア
    にしていただけませんか。

    2009年7月4日 19:14
  • SurferOnWwwさん 佐祐理さん trapemiyaさん 小野@どっとねっとふぁんさん ノブヒデさん 参考になる回答ありがとうございます。

    また、SurferOnWwwさん途中、支離滅裂な内容を投稿してしまい申し訳ございません。ご指摘ありがとうございました。


    tomotomody
    2009年7月12日 1:39
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    SurferOnWwwさん、佐祐理さん、trapemiyaさん、小野@どっとねっとふぁんさん、ノブヒデさん
    いつもお世話になっております。

    トモディーさん、初めまして。
    MSDNフォーラムのご利用有難うございます。

    今回、SurferOnWwwさん、佐祐理さん、trapemiyaさん、小野@どっとねっとふぁんさん、ノブヒデさんから
    SqlDataSourceについてのご意見を頂いたので、勝手ながら皆さんからの投稿に、回答マークを付けさせて頂きました。
    不適切と思いましたら、回答マークを削除することも可能です。

    今後ともMSDNフォーラムをよろしくお願いします。


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年7月23日 8:48