ホームページ > バックエンド開発 > C++ > 「ExecuteNonQuery()」が「初期化されていない接続プロパティ」エラーで失敗するのはなぜですか?

「ExecuteNonQuery()」が「初期化されていない接続プロパティ」エラーで失敗するのはなぜですか?

Mary-Kate Olsen
リリース: 2025-01-03 21:49:39
オリジナル
768 人が閲覧しました

Why Does `ExecuteNonQuery()` Fail with an

ExecuteNonQuery: 初期化されていない接続プロパティによる失敗

質問:

ExecuteNonQuery( )、接続プロパティが初期化されていないことを示すエラーが発生します。この問題の原因は何ですか?

回答:

エラー メッセージ「ExecuteNonQuery: Connection プロパティが初期化されていません」は、SqlConnection オブジェクトが初期化されていないことを示しています。 SqlCommand オブジェクトに適切に割り当てられています。この問題を解決するには、SqlCommand の接続プロパティを明示的に設定する必要があります。

解決策:

接続を割り当てる 1 つの方法は、SqlCommand クラスのコンストラクターを使用することです。 :

cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection1);
ログイン後にコピー

または、接続プロパティを割り当てることもできます直接:

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

追加の考慮事項:

  • Using ステートメント: IDisposable を実装するオブジェクトには using ステートメントを使用することをお勧めします。適切なリソースのクリーンアップと接続を確保するための SqlConnection などクロージャ.
  • 接続プーリング: 接続の作成と終了を繰り返し行うと (たとえば、foreach ループ内のエントリごとに)、不必要なオーバーヘッドになります。代わりに、ループの外で一度接続を作成して開き、ループが完了した後にのみ接続を閉じることを検討してください。

サンプル コード:

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) "))
{
    insertCommand.Connection = connection1;
    cmd.InsertCommand = insertCommand;

    // Other code...

    connection1.Open();
    insertCommand.ExecuteNonQuery();
}
ログイン後にコピー

以上が「ExecuteNonQuery()」が「初期化されていない接続プロパティ」エラーで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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