• ベストアンサー

接続の問題

ASP.NetでWebアプリ作っていますが、 OS:WinXP 言語:VB Visual Studio.Net2003 データグリッドでAccessのデータと接続して、データ表示したいですが、一般的はどんな方法を使いますか。 ちなみにデータベースと繋ぎっぱなしで、効率が落ちると聞いているのですが・・・ 詳しい方がいたら、教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.2

>その時点でOleDbDataAdapter.DisposeとOleDbConnection.CloseとOleDbConnection.Dispose加えればいいですよね? そうですね!接続の管理だけは、開発者側で見えるように 実装してあげれば、いいのかなと。 WebFormにOleDbDataAdapterやOleDbConnectionを配置した場合でも、 コードの中でインスタンスや接続情報を生成して実装した場合でも、 ConnectionのCloseやDispose()は、できると思います。 >そのあとのデータ操作は全部データセットを通じて変更したり、できることでしょうね。 そうですね。 DataSetさえ取れてしまえば(Fillしてしまえばという言い方がいいんですかね)、 後はConnectionやAdapterは不要になるので、 CloseしたりDisposeすれば、宜しいんじゃないかと思います。 参考になれば、幸いです。

sinomori
質問者

お礼

了解です。 説明ありがとうございます!

その他の回答 (1)

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

つなぎっぱなしだとレスポンス(効率)というよりも ロック・排他の問題等も発生して、大問題です。 (このロック・排他に対する待ちが発生するから、効率が 悪いという言葉になっているだけです。その辺りは理解を 間違えないようお願いします) 上記は、どこから来た情報なのか根拠が見えないので なんともいえないのですが、恐らく、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を使うことには 変わりないかと思います。

sinomori
質問者

お礼

ありがとうございます。 おしゃった通りWebForm上に OleDbConnectionや、OleDbDataAdapterのコントロールを設置して、 Fillでデータセットにデータ格納する。 その時点でOleDbDataAdapter.DisposeとOleDbConnection.CloseとOleDbConnection.Dispose加えればいいですよね? そのあとのデータ操作は全部データセットを通じて変更したり、できることでしょうね。

関連するQ&A