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

C# の「ExecuteNonQuery」が「接続プロパティが初期化されていません」エラーをスローするのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 05:47:39477ブラウズ

Why is my C# `ExecuteNonQuery` throwing a

ExecuteNonQuery: 接続プロパティが初期化されていません

提供された C# コードで発生した問題は、InsertCommand という名前の SqlCommand の Connection プロパティが初期化されていないことです。が設定されているため、「ExecuteNonQuery: 接続プロパティが設定されていません」というエラーが発生します。初期化されました。"

このエラーを解決するには、Connection プロパティを InsertCommand に明示的に割り当てる必要があります。これは、Connection プロパティまたは SqlCommand のコンストラクターを使用して実現できます。

// Option 1: Using the Connection property
cmd.InsertCommand.Connection = connection1;

// Option 2: Using the constructor
cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection1);

さらに、SqlConnection や SqlCommand などの IDisposable オブジェクトには 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) "))
{
    insertCommand.Connection = connection1;
    cmd.InsertCommand = insertCommand;

    connection1.Open();

    foreach (EventLogEntry entry in alog.Entries)
    {
        // Assign parameter values
        // ...

        // Execute the insert command
        cmd.InsertCommand.ExecuteNonQuery();
    }
}

これらの調整を行うことで、InsertCommand の接続プロパティが適切に設定され、エラーが発生することなくコードが実行されるはずです。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。