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

... 46  47  48  49  50  51  52  53  54  55  [56]  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
1281(non...7/1/201418707(글쓴이의 요청으로 삭제합니다.) [4]
1280동동이6/25/201417848안녕하세요. ocx의 비동기 또는 쓰레드에서 호출 [1]
1279(non...6/23/201418174(글쓴이의 요청으로 삭제합니다.) [17]
1278이상식6/19/201419229.net DLL 내 자바스크립트를 수정 또는 재정의 할 수 있을까요? [3]
1277김솔지6/18/201416335silverlight에서 datagrid, listbox질문이여 [2]
1276정우석6/16/201415807쿠키 [1]
1274김솔지6/10/201420406배포 페이지 url을 얻고 싶습니다. [8]
1272이훈모6/7/201415454정말 어려운 상황에 직면했습니다. [1]
1270Jong...6/2/201425299C#과 C++을 이용한 Image 처리. [13]
1269김아영5/29/201415903InitializeComponent 함수 호출 지연 현상 [5]
1268솔솔5/27/201415560smart client [1]
1266김솔지5/22/201417788clickonce 수정에 대해 알고싶습니다. [2]
1265이은아5/22/201422203DataGridView 헤더를 두줄이상으로 하고싶습니다. [1]파일 다운로드1
1264김인호5/18/201420297소스코드 및 예제그림 zip 파일 [1]
1263이영종5/15/201417836159페이지 오타인것 같습니다 [5]
1262(non...5/4/201418774(글쓴이의 요청으로 삭제합니다.) [10]
1261이근주5/4/201416508다시 한번 질문드릴께요. [2]
1259이근주5/1/201415924도서 오류인 것 같네요.. [1]
1258최세정4/28/201418581안녕하세요~php module 오류로 고민하다가 여기까지 왔네요..ㅜㅜ [2]
1252popo4/21/201417800바인딩 질문입니다. [2]
1251(non...4/20/201421904(글쓴이의 요청으로 삭제합니다.) [11]
1249홍용규4/17/201422206app.config 파일 관련 질문 있습니다. [2]
1246(non...3/30/201418009(글쓴이의 요청으로 삭제합니다.) [1]
1245POPO3/26/201417260Http 프로토콜 관련 질문 입니다. [1]
1244(non...3/26/201417152(글쓴이의 요청으로 삭제합니다.) [1]
1241(non...3/22/201421039(글쓴이의 요청으로 삭제합니다.) [4]
... 46  47  48  49  50  51  52  53  54  55  [56]  57  58  59  60  ...