2014년 1월 8일 수요일

[예제]DataSet, DataTable에서 find 및 삭제예제[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육]

[예제]DataSet, DataTable에서 find 및 삭제예제[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육]

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

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

                //Conn.Open();

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

                //CommandBuilder 개체를 이용하여 SQL 명령을 만든다.
                OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

                //관련된 데이터 테이블들, 행, 열을 담을 DataSet 개체를 만든다.
                DataSet ds = new DataSet();

                //DataAdapter를 이용하여 DataSet 에 데이터를 채운다.
                adapter.Fill(ds, "EMP");

                //데이터를 화면에 출력 하자.
                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);


                //DataCulumn 배열을 이용하여 기본키를 설정 한다
                //Find를 사용하기 위해 기본키를 설정, 키를 설정 할려면 컬럼의 배열에 담아야 한다.
                //그런다음 그 배열을 PrimaryKey 속성에 배정한다.
                DataColumn[] keys = new DataColumn[1];
                keys[0] = ds.Tables["EMP"].Columns["empno"];
                ds.Tables["EMP"].PrimaryKey = keys;

                /* 위의것과 또 다른 방법으로 데이터베이스로 부터 직접 기본키 정보를 얻을 수 * 있는데 이 경우엔 DataSet을 채우기 전에 명시적으로 키 정보를 빼먹지 말고* 가지고 오라고 해야 한다.
                * adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                * adapter.Fill(ds, "학생")
                * 이렇게 하면 DataTable의 PrimaryKey 속성을 직접 설정 한 것과 동일한 효과를 얻는다
                */


                //Find는 DataRow 객체를 반환한다. 사번이 8888인것을 검색
                DataRow findrow = ds.Tables["EMP"].Rows.Find(8888);

                if (findrow != null)
                {
                        findrow.Delete();
                        adapter.Update(ds, "EMP");

                        //데이터를 화면에 출력 하자.
                        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길동
EMPNO : 7777, ENAME : 9길동
 총 17 건 입니다.
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 : 7777, ENAME : 9길동
 총 16 건 입니다.
 


  • JAVA
  • ORACLE
  • iPhone/Android
  • .NET
  • 표준웹/HTML5
  • 채용/취업무료교육
  • 초보자(재학생)코스

  • 댓글 없음:

    댓글 쓰기