Microsoft MVP성태의 닷넷 이야기
C# 디버깅 모드에서만 DB Insert가 되는 현상 질의 [링크 복사], [링크+제목 복사]
조회: 9460
글쓴 사람
몽중언 (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)
5399Wpf개...10/21/20206641Binding 된 항목의 갱신 시 간헐적 끊어짐 발생 문제. [2]
5397나그네10/15/20206102.net Core 3.1 에서 Entity Framework 와 ADO.NET 선택에 관해 여쭤봅니다. [2]
5396여정욱10/15/20206187CLR heap 관련 질문 2 [2]
5395여정욱10/14/20207959CLR heap 관련 질문 [2]
5394진우10/12/202011380닷넷코어 (닷넷5) winform wpf는 리눅스/맥에서도 가능한가요? [2]
5393김세용9/23/20207900C#에서 대량의 클래스를 빠르게 생성하는 방법이 없을까요? [6]
5392전경호9/22/20207550WPF에서 WindowsFormsHost의 메모리 누수 문제 때문에 문의드립니다. [1]파일 다운로드1
5391민성9/22/20206857안녕하세요 항상 감사드립니다. 하나 질문 드리겠습니다. [1]
5390alow...9/18/20209712System.AccessViolationException 보호된메모리 부분 예외처리 [1]
5389C# 8...9/18/20207957후위 증감 연산자 오버로딩 방법 좀 알려주세요 [4]
5388영귤9/17/20208914Nullable reference type 에 Non-nullable reference type 을 대입해도 경고가 발생하지 않습니다. [2]
5387하태9/17/20207336안녕하세요! 비동기 통신과 관련하여 질문하나만 드리겠습니다! [3]
5386박민웅9/16/20209111정성태 스승님 안녕하세요 !! [1]
5385영귤9/12/202066223항 연산자에 ref 지원? [1]
5384guest9/10/20206499시작하세요! C# 8.0 프로그래밍 책에 오타가 있는 것 같습니다. [3]
5383민성9/8/20207990안녕하세요 자주 도움을 주셔서 감사드립니다. WPF에서 크롬 브라우저 삽입에 대하여 [1]
5382정씨9/4/20207148[C#] 시리얼통신 수신된 데이터를 그리드뷰에 뿌르는데 일정 시간이 지나면 버벅 거리는 이유가 뭘까요?? [3]
5381질문 있...9/4/20206912웹으로 사용하는 c#과 응용프로그램으로 사용하는 c#이 많이 다른가요?? [2]
5380yeon9/3/20206974winform 의 datagridview는 바인딩이 안 되나요? [1]
5379guest9/2/20209648시작하세요! C# 8.0 프로그래밍 책에 오타가 있습니다. [3]
5378net9/2/20207120mes 응용프로그램을 .net 웹폼으로 만들기도 하나요? [2]
5377net9/2/20206525.net 사용한 웹폼으로 응용프로그램을 만들경우 [1]
5376영귤9/1/20206917nullable 타입간의 비교연산은 그냥 가능한 건가요? [1]
5375영귤8/30/20208406이벤트와 델리게이트의 차이가 궁금합니다. [2]
5374guest8/27/20209507시작하세요! C# 8.0 프로그래밍 책에 오타가 있습니다. [1]
5373agj8/26/20207704System.Single::ToString()함수의 IL코드를 보았는데 ldnull, throw가 전부입니다. 왜 이렇게 짧죠? [2]
... 16  17  18  19  20  [21]  22  23  24  25  26  27  28  29  30  ...