* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window 10 64bit | |
CUBRID 10.1 (10.1.2.7694-64632b2) (64bit release build for Windows) (Aug 10 2018 15:47:52) |
|
10.1.0.0005 |
|
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;
}
| 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