잘못된 작업입니다. 연결이 닫혔습니다. 해결 방법

잘못된 작업입니다. 연결이 닫혔습니다. 오류가 발생하였나요?
해당 오류는 IDbConnection 객체의 ConnectionState가 Closed 되어 발생합니다.

오류 발생 예시

  1. 데이터베이스 커넥션 설정 시 Open을 누락한 경우
  2. 데이터베이스 커넥션 타임아웃으로 연결이 닫힌 경우
System.InvalidOperationException: 잘못된 작업입니다. 연결이 닫혔습니다.
위치: System.Data.ProviderBase.DbConnectionClosed.BeginTransaction(IsolationLevel il)
위치: System.Data.OracleClient.OracleConnection.BeginDbTransaction(IsolationLevel isolationLevel)
위치: System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction()

잘못된 작업입니다. 연결이 닫혔습니다.

커넥션 객체가 생성이 된다고 하여 스테이트가 자동으로 열리지는 않습니다. 명시적으로 메서드를 호출하셔야 합니다. 다음은 잘못된 작업입니다. 연결이 닫혔습니다. 오류 예제 자료입니다.

using (IDbConnection con = new OracleConnection("User Id=userName;Password=password;Data Source=dataSourceName"))
{
    //System.InvalidOperationException: 잘못된 작업입니다. 연결이 닫혔습니다.
    //con.Open();
    using (IDbCommand cmd = con.CreateCommand())
    {
        using (IDbTransaction tx = con.BeginTransaction())
        {
            cmd.Transaction = (OracleTransaction)tx;
            cmd.CommandText = "INSERT INTO table_name (column_name) VALUES (:param)";
            cmd.Parameters.Clear();
            ((OracleParameterCollection)cmd.Parameters).AddWithValue("param", "value");
            i = cmd.ExecuteNonQuery();
            cmd.Transaction.Commit();
        }
    }
}

댓글