현 블로그는 모바일 환경이 아닌 PC환경에 최적화 되어있습니다.

 Mir의 운영환경

 본체

 DeskTop

 O S

 Windows XP Professional Version 2002 Service Pack 2

 Application

 VisualStudio2010

 .Net

 Framework Ver 3.5

DataTable Row 추가하기 


Object Array를 이용하여 Row를 한줄 소스로 추가해보자.

 

DataTable에 Row를 추가시 DataTable.NewRow()로 DataTable의 스키마를 가지고 있는 Row를 생성 후

각 컬럼별로 값을 하나씩 넣어주는게 기본적인 방법이며 안정성이 뛰어난 방법입니다.

하지만 테스트용 Data를 만들때에는 이 방법이 참 불편합니다.

그래서 테스트용 Data를 만들때에는 Object Array를 이용하여 한줄로 Data를 추가하는 방법을 추천합니다.

(일반 로직에서도 물론 사용가능합니다. 하지만 보통 루프문을 돌려서 Data를 추가할때는 기본방식이 더 깔끔해 보입니다.

- Data검증 로직까지 한줄에 적어넣으면 개인적으로는 좀 복잡해보입니다.)

아래 소스를 보시면 기본적인 방법으로 Row를 추가하는 방법과 Object Array를 이용하여 Row를 추가하는 방법을 적어놓았습니다.

 

- NewRow() 사용 예제 -

        private DataTable Create_Student_DataTable()
        {
            //DataTable 생성 
            DataTable dt = new DataTable { TableName = "TestTbl" }; 
            //Columns 생성 
            dt.Columns.AddRange(new DataColumn[] { 
            new DataColumn { ColumnName = "Index",      Caption = "학번",     DataType = typeof(int)      } 
          , new DataColumn { ColumnName = "Name",       Caption = "이름",     DataType = typeof(string)   }  
          , new DataColumn { ColumnName = "Sex",        Caption = "성별",     DataType = typeof(string)   }
            });

            // DataRow 생성 및 Index를 기준으로 Row 추가하기 (비추천)
            DataRow dr = dt.NewRow();
            dr[0] = 1;
            dr[1] = "미리";
            dr[2] = "여";
            dt.Rows.Add(dr);
            // DataRow 생성 및 Column Name을 기준으로 Row 추가하기 (추천)
            dr = dt.NewRow();
            dr["Index"] = 1;
            dr["Name"]  = "미르";
            dr["Sex"]   = "남";
            dt.Rows.Add(dr);

            return dt;
        }

- Object Array 사용 예제 -

        private DataTable Create_Student_DataTable()
        {
            //DataTable 생성 
            DataTable dt = new DataTable { TableName = "TestTbl" }; 
            //Columns 생성 
            dt.Columns.AddRange(new DataColumn[] { 
            new DataColumn { ColumnName = "Index",      Caption = "학번",     DataType = typeof(int)      } 
          , new DataColumn { ColumnName = "Name",       Caption = "이름",     DataType = typeof(string)   }  
          , new DataColumn { ColumnName = "Sex",        Caption = "성별",     DataType = typeof(string)   }
            });

            DataRow dr = dt.NewRow();
            dt.Rows.Add(new object[] { 1, "미르", "남" });
            dt.Rows.Add(new object[] { 2, "미리", "여" });
            dt.Rows.Add(new object[] { 1, "미르", "남" });
            dt.Rows.Add(new object[] { 3, "미자", "여" });
            dt.Rows.Add(new object[] { 4, "미르", "여" });
            dt.Rows.Add(new object[] { 5, "미시", "여" });

            return dt;
        }

두 로직을 비교해보면 여러 row를 직접 넣기에는 Object Array를 사용시 훨씬더 깔끔하며 보기 좋은걸 알수 있습니다.

 


Tip. NewRow()를 사용하여 Data를 넣을때 Index기준으로 Data를 추가시 Column이 하나 추가되면 많은 부분을 수정해야할 위험성을 가지고 있습니다. 되도록이면 ColumnName을 기준으로 Data를 추가하는것을 추천합니다.

 

※ 관련글

+ Recent posts