Microsoft MVP성태의 닷넷 이야기
현업에서 주로 사용하는 DB업데이트 방법 질문입니다. [링크 복사], [링크+제목 복사],
조회: 18044
글쓴 사람
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)
5201김대훈8/3/201917133상속시 생성자에 대해 질문드립니다 [3]
5200농상7/30/201920297foreach로 데이터 변경 [2]
5190오리다람7/20/201917139질문드립니다. [3]
5189진우7/19/201916122C# 스레드풀 코어별 실행 문의 [2]
5188황태관7/19/201915742비주얼베이직 2019 실행 할때 마다.. [3]
5187플하7/19/201919139UWP 관련 궁금한 사항에 대해서 [1]
5186김대훈7/14/201917911박싱과 언박싱에 대해 [2]
5185농상7/13/201916156Nullable에 대해서 [1]
5184김대훈7/4/201915787저자님의 책을 다 본후에는 [2]
51837/2/201917397.NET Compact Freamwork 컨트롤러 더블버퍼링 [1]
5182wpf ...7/2/201916754wpf 질문 드립니다. [1]파일 다운로드1
51817/1/201918614DataGridview Doublebuffer 에 대해서 질문드립니다. [2]
5180김대훈6/25/201918104배열과 반복문에서 질문드립니다 [2]
5177농상6/13/201920786멀티스레드 건의 [2]
5176이선호6/13/201917529안녕하세요. 닷넷 문제로 검색하다 알게되어 들어왔습니다. 현재 IIS 문제가 있어 질문드립니다. [1]
5175Chobo6/12/201917577WPF Ellipse 그리기! [3]
5174농상6/11/201917147ThreadPool 조인에 관해 [1]
5173전우치6/9/201917951공유 리소스에 대한 스레드 동기화 처리를 위해서 lock 이용 시 문의 [3]
5172김대훈6/7/201916692너무힘드네요 공부에 대한조언부탁드립니다 [2]
5171조남석6/4/201916125EX)11-2(treeview)에 대한 질문입니다. [3]
5170레리6/4/201917011Setup 프로젝트 레지스트리 설정 관련 질문입니다. [1]파일 다운로드1
5169농상6/3/201916688멀티스레드 파라미터 관련 [2]
5168익명유저5/30/201916200항상 정말 감사드립니다... [1]
5167WPF5/23/201916850질문드립니다. [1]
5165이대희5/22/201915396Visual Studio 설치 구성요소 문의 (C# 7.3 개정판 관련) [1]
5164레드5/21/201918272실행 과정과 실행파일 디버그 시 Icon변경 질문드립니다. [5]
... 16  17  18  19  20  21  22  23  24  25  26  27  28  [29]  30  ...