Microsoft MVP성태의 닷넷 이야기
현업에서 주로 사용하는 DB업데이트 방법 질문입니다. [링크 복사], [링크+제목 복사],
조회: 16746
글쓴 사람
swc (djmann2 at naver.com)
홈페이지
첨부 파일
[repos.zip]    

OracleCommandBuilder ocb;
ocb = new OracleCommandBuilder(oda);
oda.UpdateCommand = ocb.GetUpdateCommand();
oda.InsertCommand = ocb.GetInsertCommand();
oda.DeleteCommand = ocb.GetDeleteCommand();
oda.Update(ds);

방법 2
cmd.Parameters.Add("EMPLOYEE_ID", OracleDbType.Int32, 6).Value = Int32.Parse(employee_id_txtbx.Text);
                  cmd.Parameters.Add("LAST_NAME", OracleDbType.Varchar2, 25).Value = last_name_txtbx.Text;
                  cmd.Parameters.Add("EMAIL", OracleDbType.Varchar2, 25).Value = email_txtbx.Text;
                  cmd.Parameters.Add("HIRE_DATE", OracleDbType.Date, 7).Value = date_picker.SelectedDate;
                  cmd.Parameters.Add("JOB_ID", OracleDbType.Varchar2, 10).Value = job_id_txt.Text;

C# WPF에서 DB를 UPDATE,INSERT, DELETE 할 수 있는 방법은 제가 알고있는건 2가지입니다.

1번 방법은 DATAGRID에서 UPDATE, INSERT, DELETE된 DATASET 정보를 OracleDataAdapter의 UPDATE메소드를 통해 한번에 업데이트 하는 방법하고

2번 방법은 OracleCommand에 SQL문과 피라미터값을 넣어서 쿼리문을 실행하는 방법입니다.

현업에서 주로 어떤방법을 사용하는지 알 수 있을까요? 혹시 더 좋은 방법이 있다면 알려주시면 감사합니다.






방법 1로 하면 되게 간단한데 예상치 못하게 트리거 오류가 나네요. 디버깅해서 db로 전송되는 질의문을보니 제가 이해하기가 좀 어렵네요.

방법 2로 하고는 싶은데 datagrid에서 UPDATE, INSERT, DELETE되거나 하나 이상의 행에 수정된 내용을 db에 적용 시키는 방법을 찾아봐도 안나오네요.

혹시 아시면 알려주시면 감사합니다.








[최초 등록일: ]
[최종 수정일: 6/5/2018]


비밀번호

댓글 작성자
 



2018-06-05 11시23분
2가지라고는 하지만 둘 다 마찬가지입니다. DataAdapter가 자동으로 쿼리를 구성해주는 듯 하지만 결국 수작업으로 구성한 것과 별반 다르지 않습니다.

방법 1의 자동화에서 트리거 오류가 나는 것은, 해당 DB 테이블에 걸린 제약 조건을 위반하고 있기 때문일 것입니다. DB 테이블에 걸린 제약 조건을 이해하시면 왜 DataAdpater에서 오류가 발생하는지 알 수 있게 될 것입니다.

제약 조건을 도저히 모를 상황이라면 방법 2를 어쩔 수 없이 써야 할 텐데요, ItemsSource에 DataTable을 전달하니, 다음의 메서드를 이용하면 변경된 데이터를 반환받을 수 있습니다.

DataTable.GetChanges Method ()
; https://msdn.microsoft.com/en-us/library/k2552649(v=vs.110).aspx
정성태

... 61  62  63  64  65  66  67  68  69  [70]  71  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
818개발돌이8/14/200917139ActiveX개발한 dll을 임베디드 할때 UI에 대한 질문 [1]파일 다운로드1
817채승수8/13/200916414클릭원스 관련 질문드립니다.~ [1]
816박진오7/29/200915737다국어 사이트의 컨텐츠 저장 방식에 대해.. [2]
814서광원7/16/200924672IWebBrowser2를 이용한 프로그램에서 javascript의 alert 창 무시하는 법? [1]
813윤상균7/16/200915539비관리코드와의 상호운용에서 마샬링 질문 [1]
812김현우7/13/200916017usercontrol은 mdi container가 될수 없는데 이를 구현할 방법은 무엇일런지요? [2]
811조민수7/3/200915493MSDN Magazine 한글화 않되나요? [1]
810세경6/29/200920906SmartClient Vista 64bit IE7 [4]
809윤석준6/24/200920895IE -nomerge 옵션으로 새창을 열려고 합니다. [1]
808한승훈6/4/200919672dll import하기 위해 struct 구성시에 struct가 struct를 가지고 있고 포함된 struct가 ByValArray형태일때 해결 [1]
806곰티5/26/200917838defcon pro 설치 원천 봉쇄 방법 문의 [3]
802채승수5/8/200916913신뢰사이트 등록/적용에 관해 질문드립니다. [1]
801채승수4/15/200917772IE8 새세션을 코드로 구현할수 없을까요 [1]
800신동열4/7/200917945IE8에서 스마트 클라이언트 로딩 문제 [2]
7993/27/200921732이벤트 로그 오류 [1]
798천해3/26/200918212IE8.0 에 관해 질문 드립니다. [2]
797궁금..3/23/200918124IE 8 관련 질문.. [2]
796정성태3/20/200916772스마트클라이언트와 ActiveX에 관한 질문 [1]
795김기용3/19/200916412[질문] DHTML 다이얼로그 관련 [2]
794박평옥3/18/200916761Vista에서 URL Shortcut 실행 시 SetSite가 두 번 호출되는 증상에 관해 조언 부탁드립니다. [2]
792김기용3/12/200915919어제 세미나 잘 들었습니다. 질문사항이 있습니다.(ie8 마이그레이션 관련) [4]
791vb표성백2/17/200921379ATL 로 만든 COM 에 문자열 전달하기! C#에서 어떻게 하나요? [1]
790고민중2/16/200914029vista에 vs2005를 사용중입니다. [1]
789지언2/14/200916080MFC & C#(COM) 호환 관련하여 답변좀 부탁드립니다 [2]
788하루야채2/3/200915064스마트클라이언트 Windowless 설정에 대해서 문의드립니다. [2]
787궁금이2/2/200915514TFS 관련하여 질문드리고자 합니다. [2]
... 61  62  63  64  65  66  67  68  69  [70]  71  72  73  74  75  ...