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

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