본문 바로가기
개발언어/3rd Part

ultrawebgrid의 예외처리에러 When batching, the command's UpdatedRowSource property value of UpdateRowSource.FirstReturnedRecord or UpdateRowSource.Both is invalid

by 엔돌슨 2008. 11. 20.
반응형

예외발생상황
When batching, the command's UpdatedRowSource property value of UpdateRowSource.FirstReturnedRecord or UpdateRowSource.Both is invalid


배치 업데이트를 수행하기 위해 추가적으로 설정해야 할 작업은 추가/수정/삭제 커맨드의 UpdateRowSource 속성의 값을 None 혹은 OutputParameters 로 설정해야 한다는 것이다. UpdateRowSource 속성은 추가/수정/삭제의 업데이트 결과를 어떻게 받아올 것인가를 지정하는 속성으로써 UpdateRowSource 열거 타입인 None, OutputParameter, FirstReturnedRecord, Both 중 하나의 값으로 설정할 수 있으며 디폴트는 Both 이다. 하지만 배치 업데이트는 한 번에 여러 업데이트 커맨드를 데이터베이스에 제출하므로 중간에 결과셋을 받아 올 수 없다. 따라서 배치 업데이트에서는 None 이나 OutputParameter 값 만이 UpdateRowSource 속성에 유효한 값이 된다. [리스트 1]에서도 각 커맨드의 UpdateRowSource 속성의 값을 None으로 설정하고 있음을 알 수 있을 것이다.

 

                insertCommand.CommandText = "insert into h_gongje (gj_gubun, gj_code, gj_name, gj_bigo, gj_inuser, gj_indate)";
                insertCommand.CommandText += " Values(@gubun, @code, @name, @bigo, @inuser, @indate )";
                insertCommand.Parameters.Add("@gubun", SqlDbType.VarChar, 2, "gj_gubun");
                insertCommand.Parameters.Add("@code", SqlDbType.VarChar, 3, "gj_code");
                insertCommand.Parameters.Add("@name", SqlDbType.VarChar, 50, "gj_name");
                insertCommand.Parameters.Add("@bigo", SqlDbType.VarChar, 50, "gj_bigo");
                insertCommand.Parameters.Add("@inuser", SqlDbType.VarChar, 10, "gj_inuser");
                insertCommand.Parameters.Add("@indate", SqlDbType.VarChar, 8, "gj_indate");
----------------insertCommand.UpdatedRowSource = UpdateRowSource.None;

                SqlCommand updateCommand = new SqlCommand();
                updateCommand.CommandText = "update h_gongje set gj_name=@name, gj_bigo=@bigo, gj_inuser=@inuser, gj_indate=@indate ";
                updateCommand.CommandText += "where gj_gubun=@gubun and gj_code=@code";
                updateCommand.Parameters.Add("@gubun", SqlDbType.VarChar, 2, "gj_gubun");
                updateCommand.Parameters.Add("@code", SqlDbType.VarChar, 3, "gj_code");
                updateCommand.Parameters.Add("@name", SqlDbType.VarChar, 50, "gj_name");
                updateCommand.Parameters.Add("@bigo", SqlDbType.VarChar, 50, "gj_bigo");
                updateCommand.Parameters.Add("@inuser", SqlDbType.VarChar, 10, "gj_inuser");
                updateCommand.Parameters.Add("@indate", SqlDbType.VarChar, 8, "gj_indate");
----------------updateCommand.UpdatedRowSource = UpdateRowSource.None;

                SqlCommand deleteCommand = new SqlCommand();
                deleteCommand.CommandText = "delete from h_gongje where gj_gubun = @gubun and gj_code = @code";
                deleteCommand.Parameters.Add("@gubun", SqlDbType.VarChar, 2, "gj_gubun");
                deleteCommand.Parameters.Add("@code", SqlDbType.VarChar, 3, "gj_code");
----------------deleteCommand.UpdatedRowSource = UpdateRowSource.None;