none
データソースの使い方 RRS feed

  • 質問

  • 初歩的な質問かもしれませんが、よろしくお願いします。

    会社で社員が作業した時間を記録するソフトを作成しています。

     VBのWindowsフォームでデータを入力し、SQLSERVERに格納するといったプログラムです。VBとSQLSERVERで開発しているのですが、作ったアプリケーションはどうすべきでしょうか?使用するユーザーは5人程度です。それぞれ使用する端末に配布しようと考えていたのですが、配布するとデータソースが参照できません。開発環境ではデータソースはローカルマシンにインストールしてあるSQLSERVERにあります。その後どうしてもデータソースが参照できないので作り直すことになりました。

     SqlClient の SqlConnection SqlCommand SqlDataReader を使い何度もCommandTextを変更し、クエリ文字列をServerに発行してDataReaderに格納しています。かなり効率が悪そうなプログラムになってしまいました。 今回のようなアプリケーションを作成する場合、SQLSERVERとの連携はどうやってとるものなのでしょうか?また、配布した場合はSQLclientでそのつど接続とCloseを繰り返さなければならないのでしょうか?

     どんなことでもいいので、アドバイスをいただきたく投稿しました。かなり乏しい知識なので間違えているところや不快に思われる字句がありましたら、御指摘いただけると幸いです。

    宜しくお願い致します。

    2006年9月22日 2:54

すべての返信

  • SQL Server をどこに置くか、という問題は発生しますが、どこかのサーバ一台にDBを置いて、そこにアプリケーションから接続することが可能です。
    できたアプリケーションを特に変更する必要もなく、App.ConfigにDBへの接続文字列を正しく記述するだけで動作させられると思います。

    ウィンドウズデベロッパーマガジンの10月号にこのあたりの話をC# Expressの例で書いてますけど、VBでも同じようにできると思います。

    2006年9月22日 3:45
  •  yishida さんからの引用

     どんなことでもいいので、アドバイスをいただきたく投稿しました。かなり乏しい知識なので間違えているところや不快に思われる字句がありましたら、御指摘いただけると幸いです。

    宜しくお願い致します。

    yishidaさんの御指摘通り DBはサーバーに置けば良いかと・・

    あと データベースの操作関係は

    http://www.atmarkit.co.jp/fdotnet/basics/adonet_index/index.html

    ここが 良いかと

    2006年9月22日 4:04
  •  yishida さんからの引用

     SqlClient の SqlConnection SqlCommand SqlDataReader を使い何度もCommandTextを変更し、クエリ文字列をServerに発行してDataReaderに格納しています。かなり効率が悪そうなプログラムになってしまいました。 今回のようなアプリケーションを作成する場合、SQLSERVERとの連携はどうやってとるものなのでしょうか?

    SqlConnectionを使われているということですが、SQLserverがローカルにあろうがリモートにあろうが、ConnectionStringを変えるだけです。

     yishida さんからの引用

    また、配布した場合はSQLclientでそのつど接続とCloseを繰り返さなければならないのでしょうか?

    SqlConnectionを自分でOpenしたのなら、自分でCloseして下さい。DataAdapterのように、接続のOpen & Closeを自動で行ってくれるものもあります。以上のことは、配布した場合や配布しなかった場合には何ら関係ありません。常にそうして下さい。

    2006年9月22日 5:27
    モデレータ
  • どっとねっとふぁん 様 ありがとうございます

    アプリケーションは各端末に配布し、サーバーにアプリケーションから接続する方法にしようと思います。

    App.Configにつきましては初めて知りましたのでこれから勉強しようと思います。

    ウィンドウズデベロッパーマガジンは早速参考にさせていただきます。

    お知恵をお貸しいただいて感謝いたします。

    2006年9月22日 6:25
  • かずboo 様 ありがとうございます

    DBはサーバーに置くようにします。

    教えていただいたリンクはとても参考になりそうです。

    ありがとうございました。

    2006年9月22日 6:28
  • trapemiya 様 ありがとうございます

    今回のようなアプリケーションの場合一般的にはDataAdapterを使用するものなのでしょうか?

    他の人がメンテナンスをするときの為にできるだけわかりやすく記述したいと考えているので、

    より汎用てきなコードを使用したいのですがアドバイスいただけないでしょうか

    2006年9月22日 6:43
  •  yishida さんからの引用

    今回のようなアプリケーションの場合一般的にはDataAdapterを使用するものなのでしょうか?

    他の人がメンテナンスをするときの為にできるだけわかりやすく記述したいと考えているので、

    より汎用てきなコードを使用したいのですがアドバイスいただけないでしょうか


    DataAdapterを使うのが一般的というわけではありません。ADO.NETには目的に応じてDataAdapterやDataReaderが用意されていますので、必要に応じて使い分けます。DataTableが必要な場合はDataAdapterでFill、そうでない場合はDataReaderになります。DataTableにデータを格納してしまえば、そこから先はデータベースと接続が切れて、DataTableをデータソースとしてアプリケーションは動きます。DataReaderは接続型であり、データベースから値を1レコードずつ読み込む間、ずっと接続されたままになります。

    また、.NET 2.0を利用されているのでしたら、TableAdapterというものがあります。これは、DataAdapterを一歩進めて、その中でDataTableまで管理しようというものです。実はTableAdapterの中でも、DataAdapterを利用して、DataTableに値を読み込む処理を行っています。

    2006年9月22日 8:28
    モデレータ
  • trapemiya 様 ありがとうございます

    非常にわかりやすい説明ありがとうございました。

    今までわからずにいたことがすべてすっきり理解できました。以後、教えていただいたことを参考に掘り下げて勉強したいと思います。

    trapemiya 様 本当にありがとうございました。ご好意に感謝いたします。

    2006年9月24日 22:48