DataTable 개체에 행 추가
이번에는 DataTable 개체에 행을 추가하는 방법을 알아봅시다.
DataTable 클래스에는 Rows 컬렉션 속성을 제공하고 있으며 추가한 Row 개체를 보관하는 컬렉션입니다. 따라서 DataTable 개체에 행을 추가할 때는 Row 클래스를 이용합니다.
그런데, Row 개체는 DataTable 개체에 설계한 구조에 맞아야 하기 때문에 직접 생성할 수 없고 DataTable 개체의 NewRow 메서드를 이용하여 설계한 구조에 맞는 Row 개체를 생성합니다.
DataRow dr = dt.NewRow();
그리고 DataRow 개체에 열마다 원하는 값을 지정합니다.
dr["ISBN"] = isbn;
dr["Title"] = title;
dr["Author"] = author;
dr["Price"] = price;
주의할 점은 DataRow 개체를 DataTable 개체의 Rows 컬렉션 속성에 추가해야 합니다. 이 때 테이블 스키마에 위배가 발생하면 예외를 발생합니다.
dt.Rows.Add(dr);
static void Main(string[] args) { DataTable dt = new DataTable("Books"); DesignTable(dt); AddBooks(dt, "111-11-1111-111-1", "ADO.NET", "홍길동", 12000); AddBooks(dt, "111-11-1111-111-2", "XML.NET", "홍길동", 15000); ViewAll(dt); } private static void AddBooks(DataTable dt, string isbn, string title, string author, int price) { try { DataRow dr = dt.NewRow(); dr["ISBN"] = isbn; dr["Title"] = title; dr["Author"] = author; dr["Price"] = price; dt.Rows.Add(dr); } catch (Exception e) { Console.WriteLine("{0} 추가 실패", title); Console.WriteLine("이유:{0}", e.Message); } } private static void DesignTable(DataTable dt) { DataColumn dc_title = new DataColumn(); dc_title.ColumnName = "Title"; dc_title.DataType = typeof(string); dc_title.AllowDBNull = false; dt.Columns.Add(dc_title);
DataColumn dc_isbn = new DataColumn("ISBN", typeof(string)); dc_isbn.Unique = true; dc_isbn.AllowDBNull = false; dt.Columns.Add(dc_isbn); DataColumn dc_author = new DataColumn(); dc_author.ColumnName = "Author"; dc_author.DataType = typeof(string); dc_author.AllowDBNull = false; dt.Columns.Add(dc_author);
DataColumn dc_price = new DataColumn(); dc_price.ColumnName = "Price"; dc_price.DataType = typeof(int); dc_price.AllowDBNull = false; dt.Columns.Add(dc_price);
DataColumn[] pkeys = new DataColumn[1]; pkeys[0] = dc_isbn; dt.PrimaryKey = pkeys; }
private static void ViewAll(DataTable dt) { int row_count = dt.Rows.Count; Console.WriteLine("테이블 명: {0}", dt.TableName); Console.WriteLine("행 개수:{0}", row_count);
DataRow dr = null; for(int i = 0;i<row_count;i++) { dr = dt.Rows[i]; foreach (DataColumn dc in dt.Columns) { Console.WriteLine("{0}:{1}", dc.ColumnName, dr[dc]); } Console.WriteLine("-------------------------------------"); } } |
[소스] DataTable에 행 추가 예제 코드
[그림] DataTable에 행 추가 실행 결과
'프로그래밍 기술 > SQL과 ADO.NET' 카테고리의 다른 글
[ADO.NET] SqlDataAdapter (0) | 2016.04.22 |
---|---|
[ADO.NET] DataView 클래스를 사용 예 - 도서 관리 프로그램 (0) | 2016.04.22 |
[ADO.NET] DataView (0) | 2016.04.22 |
[ADO.NET] DataSet과 XML을 이용한 출판사 별 도서 관리 프로그램 만들기 (0) | 2016.04.22 |
[ADO.NET] DataTable 클래스와 XML을 이용한 도서 관리 프로그램 만들기 (0) | 2016.04.22 |
[ADO.NET] DataTable 클래스 개체 생성과 테이블 구조 설계 (0) | 2016.04.22 |
[MSSQL] 저장 프로시저 만들기 실습 (0) | 2016.04.22 |
서버 탐색기를 이용하여 SQL 저장 프로시저 사용하기 (0) | 2016.04.22 |
[ADO.NET] SqlParameter 사용 예 - 저장 프로시저를 이용하여 도서 추가 (0) | 2016.04.22 |
[ADO.NET] SqlParameter 클래스 사용 예 - 도서 추가 (0) | 2016.04.22 |