개발자가 .NET 프로그램을 실행하는 동안 "ExecuteNonQuery: 연결 속성"으로 인해 오류가 발생했습니다. 초기화되지 않았습니다." 메시지가 나타납니다.
다음 코드 샘플은 문제를 보여줍니다.
using System.Data.SqlClient; namespace Test { class Program { static void Main() { SqlConnection connection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True"); SqlCommand cmd = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) "); connection.Open(); // Connection is not assigned to the command cmd.ExecuteNonQuery(); connection.Close(); } } }
문제를 해결하려면 SqlCommand의 연결 속성을 할당해야 합니다. 이는 명령 생성 중에 또는 나중에 속성을 설정하여 수행할 수 있습니다.
명령 생성 중 할당
SqlCommand cmd = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection);
나중에 속성 설정
cmd.Connection = connection;
SqlConnection과 같이 IDisposable을 구현하는 개체의 경우 using 문을 사용하는 것이 좋습니다. 자동으로 연결을 닫고 모든 예외를 처리합니다.
using (var connection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True")) using (var cmd = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ")) { cmd.Connection = connection; // Connection is automatically closed when leaving the using block }
성능을 최적화하기 위해 foreach 루프의 각 항목에 대해 새 연결 및 데이터 어댑터를 만들 필요가 없습니다. . ADO.NET은 자동으로 연결을 관리하고 연결 풀링을 사용합니다.
위 내용은 .NET에서 `ExecuteNonQuery`가 '연결 속성이 초기화되지 않음' 오류를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!