匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

C#のデータベースのつなげ方


C#のデータベースのつなげ方において非同期で繋ぐ方法と同期で繋ぐ方法の使い分けはどのようにして決めているのでしょうか?

参考書を見るとほとんどが非同期のつなげ方になっています。
とりあえず非同期でつないでおけば良いのでしょうか?

*想定してる非同期の接続方法
Dataset ds = new Dataset();
SqlDataAdapter da = new SqlDataAdapter("sql文","接続文字列");
da.Fill(ds);

*想定している同期の接続方法
SqlConnection conn....等(省略)
conn.Open();
(処理)
conn.Close();

初歩的な質問ですが同期処理と非同期処理の使い分けについてのアドバイスをお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/05/07 20:48:03
  • 終了:2013/05/14 20:50:06

回答(2件)

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2013/05/07 22:28:22

……接続型と非接続型のことでしょうか?

http://msdn.microsoft.com/ja-jp/vstudio/dd231281.aspx

非接続型のデータアクセスも、内部的な動作は接続型のデータアクセスとなんら変わりがない。DataAdapter が内部的に使用するクラスは Connection であり、Command である。違うのは、内部的に行われる DBMS との接続と Select 文の実行が、あくまでデータを DataSet 内部に格納することを目的としている点である。接続型のデータアクセスの場合、データを行単位に読み込みながら処理を逐次実行するので DBMS との接続が常に必要だが、DataAdapter を経由した場合、インメモリの DataSet を使うため、たとえばデータを画面へ表示するための編集処理などに関しては DBMS との接続が断たれていても問題がない。参照系の基本的な動作に関しては接続型データアクセスと非接続型データアクセスとの相違はほとんどないものの、インメモリのデータベースである DataSet で十分対応可能な処理に関しては、DBMS とのコネクションといった貴重なリソースを解放できるという点で非接続型データアクセスの方がスケーラブルなプログラミングモデルとなっている。

匿名回答2号 No.2

匿名回答2号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2013/05/08 00:21:52

SELECTを想定と思いますが
たとえばWebアプリなどでコネクションを1セッションで占有してしまうと
多数のリクエストに応えられないのでとりあえず対象データをまとめて取得して
あとからこねくり回すような場合にDataSetに格納して接続をとっとと解放します。
対象件数が多い場合はその分丸ごとメモりを占有するのと取得する時間がかかります。

C/Sシステムで上から順走査するだけのような場合はDataReaderを使うと
対象レコードのみ(性格にはキャッシュ分)のデータ転送となりますので処理は軽いですが処理が終わる(ロジック上コネクションを解放する)までコネクションを占有します。

DataSetを使った更新処理は小回りが利かないのであまり採用例をみません。
(単純画面連結などでしか)

DataSetはシリアライズ可能で関数やWebサービス(asmx)のパラメータや返り値として転送に使えるので必要なデータをDataTableとして沢山入れて気軽に渡すことができます(非接続なので)

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません