アプリ版:「スタンプのみでお礼する」機能のリリースについて

ASP.NetでWebアプリ作っていますが、
OS:WinXP
言語:VB
Visual Studio.Net2003

データグリッドでAccessのデータと接続して、データ表示したいですが、一般的はどんな方法を使いますか。
ちなみにデータベースと繋ぎっぱなしで、効率が落ちると聞いているのですが・・・
詳しい方がいたら、教えてください。
よろしくお願いします。

A 回答 (2件)

>その時点でOleDbDataAdapter.DisposeとOleDbConnection.CloseとOleDbConnection.Dispose加えればいいですよね?



そうですね!接続の管理だけは、開発者側で見えるように
実装してあげれば、いいのかなと。
WebFormにOleDbDataAdapterやOleDbConnectionを配置した場合でも、
コードの中でインスタンスや接続情報を生成して実装した場合でも、
ConnectionのCloseやDispose()は、できると思います。

>そのあとのデータ操作は全部データセットを通じて変更したり、できることでしょうね。

そうですね。
DataSetさえ取れてしまえば(Fillしてしまえばという言い方がいいんですかね)、
後はConnectionやAdapterは不要になるので、
CloseしたりDisposeすれば、宜しいんじゃないかと思います。

参考になれば、幸いです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/03 11:24

つなぎっぱなしだとレスポンス(効率)というよりも


ロック・排他の問題等も発生して、大問題です。

(このロック・排他に対する待ちが発生するから、効率が
悪いという言葉になっているだけです。その辺りは理解を
間違えないようお願いします)

上記は、どこから来た情報なのか根拠が見えないので
なんともいえないのですが、恐らく、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を使うことには
変わりないかと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/03 10:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!