2014년 1월 8일 수요일

[예제]DataSet 수정, 입력예제[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육]

[예제]DataSet 수정, 입력예제[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육]

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
 
  • JAVA
  • ORACLE
  • iPhone/Android
  • .NET
  • 표준웹/HTML5
  • 채용/취업무료교육
  • 초보자(재학생)코스

  • 댓글 없음:

    댓글 쓰기