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 サイトの他の関連記事を参照してください。