ホームページ > バックエンド開発 > C++ > ExecuteNonQuery が「接続が初期化されていません」というメッセージで失敗するのはなぜですか?

ExecuteNonQuery が「接続が初期化されていません」というメッセージで失敗するのはなぜですか?

Susan Sarandon
リリース: 2025-01-03 11:10:38
オリジナル
112 人が閲覧しました

Why Does ExecuteNonQuery Fail with

Cannot ExecuteNonQuery: Connection Not Initialized

を使用してクエリを実行しようとすると、繰り返し問題が発生します。 ExecuteNonQuery:

ExecuteNonQuery: Connection property has not been initialized. 
ログイン後にコピー

説明

このエラーは、SqlCommand オブジェクトの Connection プロパティが割り当てられていない場合に発生します。 Connection プロパティは、SqlCommand とデータベース間の接続を確立します。接続が確立されていないと、ExecuteNonQuery を実行できません。

解決策

この問題を解決するには、データベース接続を SqlCommand オブジェクトの Connection プロパティに割り当てます。

cmd.InsertCommand.Connection = connection1;
ログイン後にコピー

さらに、SqlConnection などの使い捨てリソースには using ステートメントを使用することをお勧めします。これにより、リソースが適切に破棄され、接続の終了が処理されます。

using (var connection1 = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True"))
{
    using (var cmd = new SqlDataAdapter())
    {
        using (var insertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) "))
        {
            // Assign connection
            insertCommand.Connection = connection1;
            
            // Set other properties...
            
            connection1.Open();
            // Execute query...
        }
    }
}
ログイン後にコピー

最適化

パフォーマンスをさらに最適化するには、反復ごとに複数の接続とデータ アダプターを作成することを避けてください。ループ。ループの外で接続とデータ アダプターを確立し、ループ内で再利用します。これにより、接続の作成と終了を複数回行うオーバーヘッドが軽減されます。

以上がExecuteNonQuery が「接続が初期化されていません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート