0

基本的に私は、データベースからの情報で満たされた 8 つ以上のリストボックスがある場所に取り組んでいる Web サイトを持っています。使いやすさのために現在使用SqlDataSourceしており、現在リストボックスにデータバインドして使用しています。

SqlDataSource接続をずっと開いたままにしますか? セキュリティ上の理由とパフォーマンス上の理由から、ウェブサイトのアーキテクチャの観点から、不必要な継続的に開いている接続を排除したいと考えています。

4

3 に答える 3

1

あなたの質問に直接答えてください: いいえ。SqlDataSource コントロールは、実行する必要がある操作が完了するとすぐに接続が閉じられるようにします。

于 2013-06-27T05:50:02.473 に答える
0

以前は SQLDataAdapter + SQLCommand を使用していましたが、現在は主に使用しています

using(SQLDataReader rdr = <YourSQLCommandVariable>.ExecuteReader())
{
    rdr.Load(<YourDataTableVariable))
}

理由は、データ アダプターがデータ リーダー上で何を行って、更新、読み取り、および削除のバッチを実行できるようにするかがわからなかったからです。考えてみれば、オーバーヘッドを発生させずにすべてを実行できるデータ アダプターのようなクラスを作成することは非常に困難です。オーバーヘッドはそれほど大きくないかもしれませんが、クエリから複数のテーブルを DataSet オブジェクトに読み込んでいない限り、それを使用するリスクはありません。

そうは言っても、結果として得られるすべてのデータをローカル マシンにローカルにキャッシュする場合でも、これらの操作のオーバーヘッドを検討する価値があるとは思えません。言い換えれば、SQL クエリに対して実行できる最大の改善は、データが一定の時間枠で変更される可能性が低い場合は SQL クエリを作成しないことです。データが 1 日に 1 回更新される場合は、24 時間以内にキャッシュしてください。キャッシングは、エンドユーザー依存の場合はセッションを介して、または HttpContext.Current.Cache オブジェクトを介して行うことができます。

于 2013-06-26T18:27:41.253 に答える