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 건 입니다.
댓글 없음:
댓글 쓰기