>백엔드 개발 >C++ >'초기화되지 않은 연결 속성' 오류와 함께 'ExecuteNonQuery()'가 실패하는 이유는 무엇입니까?

'초기화되지 않은 연결 속성' 오류와 함께 'ExecuteNonQuery()'가 실패하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-03 21:49:39750검색

Why Does `ExecuteNonQuery()` Fail with an

ExecuteNonQuery: 초기화되지 않은 연결 속성으로 인한 실패

질문:

ExecuteNonQuery( ), 연결 속성이 초기화되지 않았음을 나타내는 오류가 발생합니다. 이 문제의 원인은 무엇입니까?

답변:

"ExecuteNonQuery: 연결 속성이 초기화되지 않았습니다."라는 오류 메시지는 SqlConnection 개체가 초기화되지 않았음을 나타냅니다. SqlCommand 개체에 올바르게 할당되었습니다. 이 문제를 해결하려면 SqlCommand의 연결 속성을 명시적으로 설정해야 합니다.

해결책:

연결을 할당하는 한 가지 방법은 SqlCommand 클래스의 생성자를 사용하는 것입니다. :

cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection1);

또는 연결 속성을 할당할 수도 있습니다. 직접:

cmd.InsertCommand.Connection = connection1;

추가 고려 사항:

  • 문 사용: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.