つなぎっぱなしだとレスポンス(効率)というよりも
ロック・排他の問題等も発生して、大問題です。
(このロック・排他に対する待ちが発生するから、効率が
悪いという言葉になっているだけです。その辺りは理解を
間違えないようお願いします)
上記は、どこから来た情報なのか根拠が見えないので
なんともいえないのですが、恐らく、WebForm上に
OleDbConnectionや、OleDbDataAdapterのコントロールを設置して、
DataGridに自動的に連結させるから、接続しっぱなしの状況に
なっているという意味で、おっしゃっているのだと
思いますが、いかがでしょうか?
(詳しいことは、ちょっと調べてみないとわからないですが)
本来、WebForm上にOleDbConnectionやOleDbDataAdapterの
コントロールを設置して、DataGridに自動連結させるプロパティを
設定するやり方が基本なんですけど、
もし、「接続しっぱなし」状態を防ぐために
.NET側で自動制御させるのではなく、常に開発者側で
「接続状況」を管理したいのであれば、ConnectionもAdapterも、
全部自分でコードを書いて管理するしかないと思います。
(下記サンプル)
------------------------------------------------------------
' 接続
Dim conn As New System.Data.OleDb.OleDbConnection( _
"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Database Password=;Data Source=""D:\db1.mdb"";Password=;Jet OLEDB:Engine Type=5;Jet OLEDB:Global Bulk Transactions=1;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:New Database Password=;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Encrypt Database=False")
' SQL抽出
Dim adapter As New System.Data.OleDb.OleDbDataAdapter( _
"SELECT * FROM Table1", conn)
' 抽出したデータを取り出す
Dim dt As New System.Data.DataTable
adapter.Fill(dt)
' 接続を閉じる
adapter.Dispose()
conn.Close()
conn.Dispose()
' DataGridに表示
Me.DataGrid1.DataSource = dt
Me.DataGrid1.DataBind()
------------------------------------------------------------
やり方はいろいろですが、いずれのやり方にしても
OleDbConnectionとOleDbDataAdapterを使うことには
変わりないかと思います。
お礼
了解です。 説明ありがとうございます!