Ado.net. ExecuteNonQuery의 반환값이 항상 0 입니다.

by 모비23 posted Jan 08, 2019

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window 10 64bit
CUBRID Ver.
CUBRID 10.1 (10.1.2.7694-64632b2) (64bit release build for Windows) (Aug 10 2018 15:47:52)
CUBRID TOOL Ver.
10.1.0.0005
응용 환경(API)
ADO.NET 4.0

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
코드

private int ExecuteQuery(string query)

        {

            int result = -1;

            CUBRIDConnection sqlConn = null;

            try

            {

                sqlConn = OpenDB();

                //sqlConn.BeginTransaction();

                CUBRIDCommand sqlComm = new CUBRIDCommand(query, sqlConn);                

                result = sqlComm.ExecuteNonQuery();                

                //sqlConn.Commit();

                CloseDB(sqlConn);

            }

            catch (Exception ex)

            {

                if (sqlConn != null) CloseDB(sqlConn);

                Console.WriteLine("ExecuteQuery-" + ex.Message);

                result = -1;

            }

            return result;

        }      



override int CUBRID.Data.CUBRIDClient.CUBRIDCommand.ExecuteNonQuery()
inline

Executes a SQL statement against a connection object.

Returns
The number of rows affected.


일단 삽입, 삭제, 변경 작업 자체는 제대로 동작하고, Exception도 없습니다만, 

ExecuteNonQuery가 성공하면 반환 값이 항상 0입니다.


CUBRID 매니저에서 쿼리편집기로 명령을 수행 하면 정상적으로 

1번째 질의 1 데이터가 삭제되었습니다. [0.016 초] 라는 식으로 나오는데,


ado로 하려면 항상 0이 나와서 어떻게 처리해야 할지 고민이네요.

예를들어 1,2,3,4,5,6,7,8,9 라는 데이터에

UPDATE Tbl SET data=10 where data>5;

라는 쿼리를 날리면 4를 반환해줘야 다음 스탭이 진행 가능한데, ExecuteNonQuery 로는 불가능 한가요? 



혹시 몰라 브로커 로그도 첨부 합니다.

프로그램에서 t_user 테이블에 1 row를 추가 했으나 ExecuteNonQuery 의 반환은 0일때 로그


19-01-08 14:51:29.734 (1164) prepare 3 INSERT INTO [t_user] (uname,ubirth,utype,upass) VALUES('TEST','2019-01-08 00:00:00',1,'');

19-01-08 14:51:29.749 (1164) prepare srv_h_id 1

19-01-08 14:51:29.749 (1164) set query timeout to 0 (no limit)

19-01-08 14:51:29.749 (1164) execute_all srv_h_id 1 INSERT INTO [t_user] (uname,ubirth,utype,upass) VALUES('TEST','2019-01-08  00:00:00',1,'');

19-01-08 14:51:29.749 (1164) execute_all 0 tuple 1 time 0.000

19-01-08 14:51:29.749 (0) auto_commit

19-01-08 14:51:29.749 (0) auto_commit 0

19-01-08 14:51:29.749 (0) *** elapsed time 0.015

TAG •

Articles