Microsoft MVP성태의 닷넷 이야기
C# 디버깅 모드에서만 DB Insert가 되는 현상 질의 [링크 복사], [링크+제목 복사]
조회: 9443
글쓴 사람
몽중언 (brandword at naver.com)
홈페이지
첨부 파일
 

안녕하세요 혹시나 하는 마음에 남깁니다.
얼마전부터 C#을 이용해 주식매매프로그램을 개발중인데 문제가 있어 찾다찾다 여기까지 왔네요;;

현재 개발 환경은 Visual Studio 2017 과 DB로 Oracle 11g를 로컬 PC에 설치해서 개발중입니다.
문제가 되는 부분은 증권사에서 제공하는 API를 통해 내려받은 종목코드들을 배열로 만들어
for문을 이용해 코드별로 상세 정보를 다시 API로 수신받아 DB에 저장하는 방식으로 구현하고 있습니다.

--종목코드 수신 (Open API)
--종목상세 정보 수신
  (for 수신된 코드 row수
       코드상세정보요청 API 호출
       요청정보수신 API
      --수신된 상세정보 DB 저장
         for 수신된 상세정보 row수
         오라클 DB Con Open
         insert 쿼리 실행
         오라클 DB Con Close )

대략 위와같은 로직으로 구현하고 있는데 이게 디버그 모드로 실행해서보면 data 송/수신 및 Oracle DB 접속이후
Insert까지 문제 없이 흘러갑니다. 에러도 없구요;;
문제는 컴파일후에 실제 프로그램 실행시에 해당 event를 발생시키면 DB에 저장이 안됩니다;;
이 문제로 며칠동안 고민하고 여러 싸이트들을 다니며 search해 봤지만 관련된 내용이 없구 간혹 google에 저와
동일한 내용으로 질의한 내용이 있는데 거기서도 해결을 못한거 같습니다;;
해서 혹시나 하는 마음에 책을 사서 체계적으로 다시 해볼까 하다 눈에 띄는 책의 저자님 홈페이지가 있어 여기에
질문을 우선 드려 봅니다.

(추가로 말씀드리면 화면상 data Grid에서 추가/삭제/수정/조회 하도록 구현해 놓은 event가 있는데 이부분은
문제 없이 실행됩니다.)

혹시 위와 같은 현상이 있는건 어느부분을 의심해 봐야 할지요?
아님 자체적으로 해결해 보기 위해선 프로그램 실행중 어떤 부분에 breaking 걸어 확인해 봐야 한다던지...하는
혹시 조언해 주실 부분이 있는지요.. 실례가 되지 않으신다면 조언해 주실 부분이 있다면 정말 감사드리겠습니다.








[최초 등록일: ]
[최종 수정일: 12/4/2017]


비밀번호

댓글 작성자
 



2017-12-04 12시22분
그러니까, event도 잘 발생이 된 것을 확인했고, DB Insert도 잘 실행이 되는 것을 확인했는데도 오라클 DB에 내용이 추가되지 않았다는 건가요? 반면 디버깅 모드에서는 잘 된다는 것이고요?

제 생각에는 아무래도 문제를 잘못 짚고 있는 것 같습니다. 디버깅이 아닌 모드에서만 그럴 확률은 그리 높지 않습니다. 다시 한번, 코드를 꼼꼼이 확인해 보세요. 어디가 되었던 오류가 발생하는 부분이 있거나 코드 실행이 안되는 부분이 있을 것입니다. Insert 코드까지 잘 실행이 되었는데 오라클 DB에 내용이 추가 안 된다는 것은 있을 수 없는 일입니다. 정말 그런 버그가 있다면 오라클이 망했을 것입니다.
정성태
2017-12-04 12시45분
[몽중언] 정성태님이 하시는 말씀은 코드가 잘못 됐다는 이야기인데...그런경우에도 디버깅 모드에서 data가 정상적으로 들어가는게 있을수 있나요?
그렇다고 하더라도...말씀하신 내용을 확인하기 위해선 어떤방법이 있을까요;; 중간중간 breaking point를 설정해놓고 event를 발생시키면 마찬가지로 debuging 모드가 돼 버려서
정상 처리 돼 버리는데요..
[guest]
2017-12-04 12시56분
로그를 남겨보면 되지 않을까요? 파일이든, 콘솔이든 로그를 남겨 코드 수행이 정상적으로 되었는지를 확인해 보세요.
정성태
2017-12-04 01시04분
[몽중언] 아..제가 질문을 좀 이상하게 했네요;; SAP만 하다가 C#은 처음 구현해보는거라..
제가 말씀드린 Debug모드는 말그대로 Break point 걸어서 한줄 한줄 F11로 실행했을때 입니다..
릴리즈 모드 말고요...C# 개념으로는 그냥 Debug mode에서도 Breaking point 걸지않고 event 실행시키면
말씀드린대로 data가 insert가 되지 않구요..F11로 라인하나하나 확인하면서 로그를 보면서 실행하면 쿼리에 지극히 정상적인 에러 (primary key중복에러라던가등..)
return없이 정상적으로 insert가 됩니다..이게 이상한거거든요;; 동일한 Debug 모드에서 왜 그런건지..
정말 이런 케이스가 없는걸까요? 아님 제가 코딩을 이상하게 해 놓은건지..
책을 사서 처음 DB 설치부터 해보려고 해도 시중에 Oracle연동 C# 관련 책은 없는것 같고 그나마 책 목차에 DB Connect 내용이 포함돼 있는것 같으셔서 질의드리고 있습니다;;
[guest]
2017-12-04 01시16분
그런 케이스는 없습니다. 단지 있다면 코드를 잘못 작성했거나 멀티 스레딩으로 인해 Visual Studio 디버깅 중에 BP로 인한 시간차가 발생해 실행이 다르게 될 수 있는 정도입니다.

그러니까... 로그는 남겨 보셨나요?
정성태
2017-12-04 01시40분
[몽중언] 안그래도 멀티스레딩때문일까 하는 생각은 어렴풋이 하긴 했으나, 개념이 잘 안서다 보니 그부분을 파지는 못했습니다.
로그도 남겨 봐야겠네요. 당연 디버깅모드에서 한줄씩 확인해 가며 봤기 때문에 굳이 로그를 남겨서 확인해볼 생각을 못했었습니다.
로그를 남기면 해당 쿼리 실행 전후에 대한 내용을 확인해 볼수 있겠네요.
(물론 로그가 그렇게 남아도 원인을 찾으려면 아찔하긴 합니다만..스레드문제인지 뭔지;ㅎㅎ)
대강 찾아보니까 StreamWrite?로 파일로 남기는 방법이 있던것 같던데..
물론 제가 더 찾아보면서 확인해 보긴 해야 하나 혹시 추천해주시는 방법 있으면 감사하겠습니다.
바쁘신데 일일이 대응해 주셔서 감사합니다. ㅎ
[guest]

... 16  17  [18]  19  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5480한예지 donator4/5/20217360GetHashCode 질문있습니다! [2]
5479한예지 donator4/4/20216423Equals를 닷넷에서 어떻게 구현했는지 보고 싶을 떄는 어떻게 해야 될까요? [2]
5478갑자기C#3/23/20218883C# Winform에서 TextBox없이 입력 받을 수 있나요? [7]
5477달팽이3/18/20215888c# 도형을 그린후 편집하는 방법이 궁금합니다. [2]파일 다운로드1
5475dimo...3/2/20216917POH가 .NET 5에 추가된 것으로 알고 있습니다. POH가 유용한 경우는 어떤 경우가 있을까요? [1]
5474Syong2/26/20216455사용자 지정 컨트롤 생성시 Invalidate, Update, Refresh의 차이점 [2]
5473한예지 donator2/25/20216309디자인 타임이 뭔지 궁금합니다!! [5]
5472dimo...2/24/20217076등록하지 않고 ocx를 사용하는 `키움`관련 포스팅을 따라가다 질문드립니다. [9]
5471남산2/21/20215726MarshalDirectiveException 에 대한 질문입니다. [1]
5470한예지 donator2/7/20215650yield 질문있습니다!! [2]
5469유호성2/6/20215201Parallel + Task.Run 동시 실행 환경에서 간헐적으로 Task.Run()에서 null이 리턴됩니다. [3]파일 다운로드1
5467hero...2/4/20215569실행 환경에 따른 Thread.Sleep 딜레이 차이 질문 [8]
5466pr1/29/20215465c# winform load시 작업표시줄에 뜨지 않는 현상을 겪으신적이 있으신가요? [4]파일 다운로드1
5465영귤1/28/20215844두 번째 await 부터는 스레드 개수만 늘어나는 것이 아닌가요 [1]
5464민우1/26/20216127C# 빌드시 코드 치환되는걸 확인하는 방법 문의 [2]
5463한예지 donator1/24/20216841Parameters.AddWithValue 와 Parameters.Add 의 차이점이 궁금합니다. [2]
5462C#초보1/22/20217234사용자 정의 메시지 전달이 가능한가요? [2]
5461한예지 donator1/22/20216598AsEnumerable() 메서드 질문 있습니다! [2]
5459한예지 donator1/21/20215945typeof와 GetType의 차이점 질문있습니다. [2]
5458진우1/20/20216800C# DataTable 에 SQL 쿼리문을 실행하는 방법 문의 (LINQ 사용하지 않고) [6]
5456성민1/17/202172329.0 출간 계획이 있으신가요? [2]
5455한예지 donator1/16/20216278교재 194페이지 콜백메서드 질문 있습니다! [5]
5454한예지 donator1/15/20215900교재 208쪽 질문....있습니다... [3]
5453안녕하세요1/15/20217340C# dll 파일을 C++에서 사용 시 memory leak 문제 [2]파일 다운로드1
5452예지1/15/20216473var를 사용할 수 없는 이유가 궁금합니다! [3]
5451예지1/14/20215295for문의 초기식에 대해 질문드립니다. [3]
... 16  17  [18]  19  20  21  22  23  24  25  26  27  28  29  30  ...