DOBON.NET DOBON.NETプログラミング掲示板過去ログ

データベース接続・切断について

環境/言語:[環境(XP)、環境(VB.NET)、NET Framework2.0]
分類:[.NET]

sql serverへの接続(OPEN)、切断(CLOSE)のタイミングについて意見をお願いします。

現在VB.NET2005でアプリを作成中なのですが、VB6.0の頃の流れでDBの接続・切断は、
 @メインフォーム起動時に接続(OPEN)
 Aメインフォーム終了時に切断(CLOSE)
と最初と最後のみ行っています。

処理内容によってSqlDataReader(接続型)/DataSetクラス(非接続型)を混在してDBアクセスを行っていますが、見た目はちゃんと動いています。

が、ネットでサンプルを見ると殆どがデータ参照の都度、DBへの接続(OPEN)・切断(CLOSE)を行っている様な気がします。

この接続・切断の方法は実は誤った書き方なのでしょうか?
よろしくお願いいたします。
よしおと申します。

> が、ネットでサンプルを見ると殆どがデータ参照の都度、
> DBへの接続(OPEN)・切断(CLOSE)を行っている様な気がします。

必要な時だけアクセスする という考えではないでしょうか。
不必要にオープンを続けるという事は、その間、排他がかかったり、
接続セッションを握ることになります。DBにも負荷がかかるかもしれません。
そのDBアクセス数が増加した場合、多くの問題が出るかもしれません。
(DBアクセス以外にどんな処理を実装されているか分かりませんが)


「VB6.0の頃の流れで〜」とありますが、このあたりは.netでもvb6でも
同じ考え方ではないでしょうか。

私は上記のように考えています。
私もよしおさんとほぼ同意見です。
特に複数クライアントでアクセスする場合は、
必要最小限のアクセスで留める必要があります。

例えば

'フォーム---
Private Sub btnSearch_Click
fncGetDBData()
End Sub

'DBアクセス---
Public Function fncGetDBData
Try
'DBオープン
'DBデータ取得処理
Catch
Finally
'DBクローズ
End Try
End Function

のように、
・DBアクセスは必要最小限に抑える
・Finallyにクローズ処理を入れる等、エラーが起こった場合も確実に接続を閉じるようにする
ことはとても重要です。

ぜひご検討ください。
Usingを使ってはどうでしょうか?
特に切断忘れの心配がないので・・・

または、継承元画面を作成し、共通的にコンストラクタで
接続、デストラクタで切断。接続回数/本数は最小限が
好ましいと思います。

以上、私の意見でした・・・

DOBON.NET | プログラミング道 | プログラミング掲示板