2016년 12월 26일 월요일

[닷넷교육,C#교육,실무교육학원추천_탑크리에듀][예제]DataSet 수정, 입력예제

using System; 
using System.Data.OleDb; 
using System.Data; 


class DataReaderSample 

        public static void Main() 
        { 
                string ConStr = ("Provider=MSDAORA;data source=oraclejava;User ID=scott;Password=tiger"); 
                OleDbConnection Conn = new OleDbConnection(ConStr); 

                Conn.Open(); 

                //작업을 위한 Adapter를 하나 만든다. 
                OleDbDataAdapter adapter = new OleDbDataAdapter("select empno, ename from emp", Conn); 

                DataSet ds = new DataSet(); 
                
                adapter.Fill(ds,"EMP"); 

                //EMP Table의 내용을 화면에 뿌리자... 
                foreach (DataRow r in ds.Tables["EMP"].Rows) 
                { 
                        Console.WriteLine("EMPNO : {0}, ENAME : {1}", r["empno"], r["ename"]); 
                } 
      Console.WriteLine(); 
                Console.WriteLine(" 총 {0} 건 입니다." , ds.Tables["EMP"].Rows.Count); 

                //데이터를 변경 
                ds.Tables["EMP"].Rows[0]["ename"] = "홍길동"; 

                /*Update Method를 호출 하기 위해 CommandBuilder를 만들자. 
                하나의 테이블을 갱신하는 간단한 경우 라면 변경용 Query를 사용 할 필요가 없다. 
                단지 자동적으로 적절한 SQL을 만들고 그것을 관련된 DataAdapter에 연관 시키는 
                CommandBuilder 개체를 사용하면 된다. CommandBuilder에 DataAdapter를 인자로 주었는데 
                이렇게 하면 CommandBuilder가 생성될때 생성자에 의해 적절한 SQL 명령문이 만들어지며 
                그것이 DataAdapter에 연경 된다. */ 
                OleDbCommandBuilder thisBuilder = new OleDbCommandBuilder(adapter); 

                /* Update 메소드는 DataTable의 행들 중 변경된 데이터를 데이터베이스에 적용 한다. 
                * Rows 컬렉션안의 DataRow 개체에는 RowState 라는 속성이 있는데 이 속성은 
                * 그 행의 삭제, 추가, 수정 여부를 의미한다. 
                */          
                adapter.Update(ds, "EMP"); 

                //변경 후 
                Console.WriteLine(); 
                foreach (DataRow r in ds.Tables["EMP"].Rows) 
                { 
                        Console.WriteLine("EMPNO : {0}, ENAME : {1}", r["empno"], r["ename"]); 
                } 

                DataRow row = ds.Tables["EMP"].NewRow(); 
                row["empno"] = "8888"; 
                row["ename"] = "9길동"; 
        
                ds.Tables["EMP"].Rows.Add(row); 

                adapter.Update(ds, "EMP"); 

                //추가 후 
                Console.WriteLine(); 
                foreach (DataRow r in ds.Tables["EMP"].Rows) 
                { 
                        Console.WriteLine("EMPNO : {0}, ENAME : {1}", r["empno"], r["ename"]); 
                } 

                Console.WriteLine(" 총 {0} 건 입니다." , ds.Tables["EMP"].Rows.Count); 

        } 




================================================= 

[결과] 
EMPNO : 7369, ENAME : 홍길동 
EMPNO : 7499, ENAME : ALLEN 
EMPNO : 7521, ENAME : WARD 
EMPNO : 7566, ENAME : JONES 
EMPNO : 7654, ENAME : MARTIN 
EMPNO : 7698, ENAME : BLAKE 
EMPNO : 7782, ENAME : CLARK 
EMPNO : 7788, ENAME : SCOTT 
EMPNO : 7839, ENAME : KING 
EMPNO : 7844, ENAME : TURNER 
EMPNO : 7876, ENAME : ADAMS 
EMPNO : 7900, ENAME : JAMES 
EMPNO : 7902, ENAME : FORD 
EMPNO : 7934, ENAME : MILLER 
EMPNO : 9999, ENAME : 9길동 
EMPNO : 8888, ENAME : 9길동 

 총 16 건 입니다. 

EMPNO : 7369, ENAME : 오라클자바 
EMPNO : 7499, ENAME : ALLEN 
EMPNO : 7521, ENAME : WARD 
EMPNO : 7566, ENAME : JONES 
EMPNO : 7654, ENAME : MARTIN 
EMPNO : 7698, ENAME : BLAKE 
EMPNO : 7782, ENAME : CLARK 
EMPNO : 7788, ENAME : SCOTT 
EMPNO : 7839, ENAME : KING 
EMPNO : 7844, ENAME : TURNER 
EMPNO : 7876, ENAME : ADAMS 
EMPNO : 7900, ENAME : JAMES 
EMPNO : 7902, ENAME : FORD 
EMPNO : 7934, ENAME : MILLER 
EMPNO : 9999, ENAME : 9길동 
EMPNO : 8888, ENAME : 9길동 

EMPNO : 7369, ENAME : 오라클자바 
EMPNO : 7499, ENAME : ALLEN 
EMPNO : 7521, ENAME : WARD 
EMPNO : 7566, ENAME : JONES 
EMPNO : 7654, ENAME : MARTIN 
EMPNO : 7698, ENAME : BLAKE 
EMPNO : 7782, ENAME : CLARK 
EMPNO : 7788, ENAME : SCOTT 
EMPNO : 7839, ENAME : KING 
EMPNO : 7844, ENAME : TURNER 
EMPNO : 7876, ENAME : ADAMS 
EMPNO : 7900, ENAME : JAMES 
EMPNO : 7902, ENAME : FORD 
EMPNO : 7934, ENAME : MILLER 
EMPNO : 9999, ENAME : 9길동 
EMPNO : 8888, ENAME : 9길동 
EMPNO : 7777, ENAME : 9길동 
 총 17 건 입니다. 
Press any key to continue 

댓글 없음:

댓글 쓰기