問題タブ [sqlconnection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - ExecuteReader には、オープンで使用可能な接続が必要です。接続の現在の状態は閉じています
わかりました、今週初めにこのエラーについて尋ねたところ、非常に役立つ回答がいくつかありました。提案に従って始めてから、間違いなく状況は大幅に改善されました.
ただし、現在、データベースにアクセスするための「正しい」ベストプラクティスの方法を使用していますが、一部の関数でこのエラーが発生し、そのブロックでエラーを消すことができません。これが私のコードです:
今、私が何をしても、ExecuteReader にはオープンで利用可能な接続が必要です。接続の現在の状態は閉じています。この接続で。このクラス内で同じものと呼ばれるオブジェクトを持つ関数 (cmd、dr など) がありますが、Using はそれ自体の後にクローズアップしますか?
提案を歓迎します:)
.net - SqlCommand.CommandTimeoutとSqlConnection.ConnectionTimeoutの違いは何ですか?
SqlCommand.CommandTimeout
.NETと.NETに違いはありSqlConnection.ConnectionTimeout
ますか?
c# - SQL Server への接続をいつ開いて閉じる必要があるか
いくつかのメソッドを含む単純な静的クラスがあります。これらの各メソッドは、SqlConnection を開き、データベースにクエリを実行して、接続を閉じます。このようにして、私は常にデータベースへの接続を閉じていると確信していますが、一方で、接続を常に開いたり閉じたりするのは好きではありません。以下は、私のメソッドがどのように見えるかの例です。
メソッドが静的クラス内にあることを考えると、単一の SqlConnection を含む静的メンバーを持つ必要がありますか? いつ、どのようにドロップすればよいですか?ベストプラクティスは何ですか?
.net - SqlConnection-リモート接続ですか、それともローカル接続ですか?
SqlConnectionオブジェクトがある場合、それがローカル接続(localhostまたは127.0.0.1)であるか、リモート接続(ローカルエリアの他のマシン)であるかをどのように判断できますか?
c# - コードをusingステートメントにリファクタリングする
私は多くのメソッドを備えたdal層を持っており、それらはすべてストアドプロシージャを呼び出し、一部のリターンリスト(を使用してSqlDataReader
)を呼び出し、その他は特定の値のみを呼び出します。
を作成するヘルパーメソッドがありますSqlCommand
:
これで、私の平均的な(過度に単純化された)メソッド本体は次のようになります。
これをリファクタリングして、ヘルパー関数を失わないようにする方法はありますか(それ以外の場合はかなりの反復作業を行います)、それでも使用できますusing
か?
c# - SQLServer接続の管理
SQL接続のベストプラクティスは何ですか?
現在、私は以下を使用しています:
これはSQL接続を行うための非常に効果的な方法であることを読みました。デフォルトではSQLプーリングがアクティブであるため、using
コードが終了するとSqlConnection
オブジェクトは閉じられて破棄されますが、DBへの実際の接続はSQL接続プールに入れられます。私はこれについて間違っていますか?
c# - カスタムオブジェクトの関数でC#の'using'ステートメントを使用して、IDisposableを実装する必要がありますか?
私は次のようなsqlConnectionマネージャークラスを持っています:
次のような'using'ステートメントで関数を使用する場合:
usingステートメントconn.Connection()
はSqlConnectionオブジェクトを返すため、接続を自動的に破棄しますか?または、SqlConnクラスにIDisposableとカスタムDisposeメソッドを実装する必要がありますか?
これはまったく良い方法ですか?レガシーコードを使用していますが、まだORMを使用できませんが、この既存のパターンを単純化してSQL接続を管理/作成する方法はありますか?
asp.net - ASP.NET で DB を呼び出した後、SQL への接続が閉じない
ASP.NET でストアド プロシージャを呼び出す汎用メソッドがあります。
CommandBehavior.CloseConnection を呼び出していますが、接続が閉じていません。初めてページをリクエストしたときに、データをうまく取得できます。リロードすると、次のエラーが表示されます。
接続は閉じられませんでした。接続の現在の状態はオープンです。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.InvalidOperationException: 接続が閉じられませんでした。接続の現在の状態はオープンです。
ソース エラー:
35 行目: 36 行目: } 37 行目: sql.Connection.Open(); 行 38: iReader = sql.ExecuteReader(CommandBehavior.CloseConnection); 行 39: sql.Dispose();
最後に sql.Connection.Close(); を入れたら 前に sql.Dispose(); iReader は既に閉じられているため読み取れないというエラーが表示されます。
明らかに、接続を誤って閉じています。誰かが私を正しい方向に向けることができますか?