Microsoft MVP성태의 닷넷 이야기
현업에서 주로 사용하는 DB업데이트 방법 질문입니다. [링크 복사], [링크+제목 복사],
조회: 17474
글쓴 사람
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
정성태

... 76  77  78  79  80  81  82  83  84  [85]  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
357정성태4/25/200611914            답변글 [답변]: [답변]: 귀찮게 해드려 죄송스럽지만. [1]
352산들바람4/19/200611573이번겨울방학때세도나를 여행하려구하는데요,,,
353정성태4/20/200618894    답변글 [답변]: 이번겨울방학때세도나를 여행하려구하는데요,,,
351오기4/18/200611361aspx [2]
350유지연4/17/200612100smartclient DB connection관련 질문 입니다. [2]파일 다운로드1
349선재빠4/17/200612070object tag를 2개 넣으면 IE가 죽어버리네요. [2]
347박찬용4/13/200612119COM+에 관한 질문입니다. [2]
345선재빠4/11/200612867Winform을 띄울 수 있는 방법이 있나요? [3]
344선재빠4/10/200614090ASP.NET 2.0에서는 VIEWASTEXT 이란 태그옵션을 지원하지 않는군요 [3]
343선재빠4/10/200613319아래와 같은 에러가 나네요.
341선재빠4/8/200612984테스트 페이지를 보면 프레임만 나오고 안에 내용이 나오지 않는군요 [1]
340김형태4/4/200612137파일서버 관련 질문드립니다.. (데브피아 답변에 이어) [2]
339조남정4/4/200612275post 주소 읽어오기 [1]
338장두헌4/4/200613849SDK PlatForm 다시 질문 - 데브피아의 내용 [1]
337강완모4/3/200614106Cab파일이 아닌 설치용 파일로 OCX들 설치하기... [1]
335비니3/23/200615140밑에 Smart Client에 대해서 질문했던 초보입니다.. TreeView컨트롤은 보이는데 안에 내용이 안보여요. [1]
336비니3/24/200612992    답변글 [재질문]:자꾸 죄송합니다...링크페이지로 이동을 안해요.... [1]
334비니3/23/200612679Smart Client강의 따라해보다가 xml에서 활성스키마는 <Tree>,<L> 요소는 지원하지 않는다고 나와요.ㅠㅠ [1]
332정준명3/21/200612762[자문자답] VS.NET에서 COM을 참조했는데, 강력한 서명이 없다고 사용불가네요.
333정성태3/22/200611211    답변글 [답변]: [자문자답] VS.NET에서 COM을 참조했는데, 강력한 서명이 없다고 사용불가네요. [1]
330심현철3/3/200614364[질문] VS2005에서 C#으로 개발한 DLL을 Javascript에서 접근할 수 없습니다. (ActiveX with C#) [2]
329권인성2/27/200612382스마트클라이언트(clickonce) 버전관리 [1]
327권인성2/24/200612127clickonce를 통해 설치 및 업데이트하려고 하는데요...보안때문에요..
331정성태3/12/200613193    답변글 [답변]: clickonce를 통해 설치 및 업데이트하려고 하는데요...보안때문에요..
325권인성2/23/200611710SETUP 및 배포관련 [1]
326권인성2/23/200611235    답변글 [답변]: 한가지만 더 질문할게요.... [1]
... 76  77  78  79  80  81  82  83  84  [85]  86  87  88  89  90  ...