C #에서 DataTable을 만드는 방법과 행을 추가하는 방법은 무엇입니까?


197

C #에서 DataTable을 어떻게 만듭니 까?

나는 이것을 좋아했다 :

 DataTable dt = new DataTable();
 dt.clear();
 dt.Columns.Add("Name");
 dt.Columns.Add("Marks");

DataTable의 구조를 어떻게 볼 수 있습니까?

지금은 추가 할 라비을 위한 Name500 을 위해 Marks. 어떻게해야합니까?


2
@귀엽다. .NET 3.5를 사용하는 경우 실제로 LINQ to SQL이 제공하는 것을 볼 수 있습니다. DataTable / DataSet 라우트를 내려 가기로 결정한 경우 최소한 강력한 형식의 DataTable을 작성하십시오.
RichardOD 2016 년

답변:


256

코드는 다음과 같습니다.

DataTable dt = new DataTable(); 
dt.Clear();
dt.Columns.Add("Name");
dt.Columns.Add("Marks");
DataRow _ravi = dt.NewRow();
_ravi["Name"] = "ravi";
_ravi["Marks"] = "500";
dt.Rows.Add(_ravi);

구조를 보거나 스키마로 바꾸려면 다음을 수행하여 XML 파일로 내보낼 수 있습니다.

스키마 / 구조 만 내보내려면 다음을 수행하십시오.

dt.WriteXMLSchema("dtSchemaOrStructure.xml");

또한 데이터를 내보낼 수도 있습니다.

dt.WriteXML("dtDataxml");

8
DataTable 클래스에는 AddRow 메서드가 없습니다. dt.Rows.Add (_ravi);를 수행해야합니다. 대신
Salamander2007 년

1
그리고 AddRow와 같은 것은 없습니다. DataTable.Rows.Add ()
djdd87

CurrentRows 이외의 필터와 함께 DataView를 사용하는 경우 dt.AcceptChanges ()를 호출하는 것을 잊지 마십시오.
Salamander2007 년

@DanD, @ Salamander2007 : 동의했습니다. 나는 지금 그것을 바꿨다. 실수로 인해 bcoz가 발생했습니다.이 작업을 지원하는 유형이 지정된 데이터 세트를 사용합니다.
이것. __curious_geek

@ 피닉스 : 방금 질문하는 사람이 내 대답과 행복하게 관련되기를 원했습니다.
이것. __curious_geek

66

다음과 같이 객체 배열을 전달할 수도 있습니다.

DataTable dt = new DataTable();
dt.Clear();
dt.Columns.Add("Name");
dt.Columns.Add("Marks");
object[] o = { "Ravi", 500 };
dt.Rows.Add(o);

또는:

dt.Rows.Add(new object[] { "Ravi", 500 });

11
이것에 대한 또 다른 대안은 Add위에 표시된 방법에 다양한 수의 매개 변수가있는 과부하가 있으므로 이것을 단축 dt.Rows.Add("Ravi", 500);하고 동일하게 작동한다는 것입니다. 이러한 접근 방식 중 하나에 대한 하나의 큰 경고 : 열이 정의 된 것과 동일한 순서로 이러한 매개 변수를 제공해야합니다. 그렇지 않으면 오류가 발생합니다. (따라서 조심해서 사용하십시오!)
Funka

34
// Create a DataTable and add two Columns to it
DataTable dt=new DataTable();
dt.Columns.Add("Name",typeof(string));
dt.Columns.Add("Age",typeof(int));

// Create a DataRow, add Name and Age data, and add to the DataTable
DataRow dr=dt.NewRow();
dr["Name"]="Mohammad"; // or dr[0]="Mohammad";
dr["Age"]=24; // or dr[1]=24;
dt.Rows.Add(dr);

// Create another DataRow, add Name and Age data, and add to the DataTable
dr=dt.NewRow();
dr["Name"]="Shahnawaz"; // or dr[0]="Shahnawaz";
dr["Age"]=24; // or dr[1]=24;
dt.Rows.Add(dr);

// DataBind to your UI control, if necessary (a GridView, in this example)
GridView1.DataSource=dt;
GridView1.DataBind();

30

DataTable 생성 :

DataTable MyTable = new DataTable(); // 1
DataTable MyTableByName = new DataTable("MyTableName"); // 2

테이블에 열을 추가하십시오.

 MyTable.Columns.Add("Id", typeof(int));
 MyTable.Columns.Add("Name", typeof(string));

DataTable 방법 1에 행 추가 :

DataRow row = MyTable.NewRow();
row["Id"] = 1;
row["Name"] = "John";
MyTable.Rows.Add(row);

DataTable 방법 2에 행 추가 :

MyTable.Rows.Add(2, "Ivan");

DataTable 방법 3에 행 추가 (같은 구조로 다른 테이블의 행 추가) :

MyTable.ImportRow(MyTableByName.Rows[0]);

DataTable 방법 4에 행 추가 (다른 테이블에서 행 추가) :

MyTable.Rows.Add(MyTable2.Rows[0]["Id"], MyTable2.Rows[0]["Name"]);

DataTable 메서드 5에 행 추가 (색인에 행 삽입) :

MyTable.Rows.InsertAt(row, 8);

24

행을 추가하려면

DataRow row = dt.NewRow();
row["Name"] = "Ravi";
row["Marks"] = 500;
dt.Rows.Add(row);

구조를 보려면

Table.Columns

18

네 줄 대신 DataRow.Add (params object [] values) 를 사용하여 하나의 라이너 를 작성할 수 있습니다 .

dt.Rows.Add("Ravi", "500");

새로운 DataTable객체 를 만들 때 다음 문장 에서는 필요가 없습니다Clear DataTable . DataTable.Columns.AddRangeon 문을 사용 하여 열을 추가 할 수도 있습니다 . 완전한 코드가 될 것입니다.

DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("Name"), new DataColumn("Marks") });     
dt.Rows.Add("Ravi", "500");

14

한 줄에 행을 추가 할 수 있습니다

    DataTable table = new DataTable();
    table.Columns.Add("Dosage", typeof(int));
    table.Columns.Add("Drug", typeof(string));
    table.Columns.Add("Patient", typeof(string));
    table.Columns.Add("Date", typeof(DateTime));

    // Here we add five DataRows.
    table.Rows.Add(25, "Indocin", "David", DateTime.Now);
    table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
    table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
    table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
    table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);

11
DataTable dt=new DataTable();
Datacolumn Name = new DataColumn("Name");
Name.DataType= typeoff(string);
Name.AllowDBNull=false; //set as null or not the default is true i.e null
Name.MaxLength=20; //sets the length the default is -1 which is max(no limit)
dt.Columns.Add(Name);
Datacolumn Age = new DataColumn("Age", typeoff(int));`

dt.Columns.Add(Age);

DataRow dr=dt.NewRow();

dr["Name"]="Mohammad Adem"; // or dr[0]="Mohammad Adem";
dr["Age"]=33; // or dr[1]=33;
dt.add.rows(dr);
dr=dt.NewRow();

dr["Name"]="Zahara"; // or dr[0]="Zahara";
dr["Age"]=22; // or dr[1]=22;
dt.rows.add(dr);
Gv.DataSource=dt;
Gv.DataBind();

9
DataTable dt=new DataTable();
DataColumn Name = new DataColumn("Name",typeof(string)); 

dt.Columns.Add(Name);
DataColumn Age = new DataColumn("Age", typeof(int));`

dt.Columns.Add(Age);

DataRow dr=dt.NewRow();

dr["Name"]="Kavitha Reddy"; 
dr["Age"]=24; 
dt.add.Rows(dr);
dr=dt.NewRow();

dr["Name"]="Kiran Reddy";
dr["Age"]=23; 
dt.Rows.add(dr);
Gv.DataSource=dt;
Gv.DataBind();

8

이를 위해 데이터 테이블에 데이터 행을 추가해야합니다.

// Creates a new DataRow with the same schema as the table.
DataRow dr = dt.NewRow();

// Fill the values
dr["Name"] = "Name";
dr["Marks"] = "Marks";

// Add the row to the rows collection
dt.Rows.Add ( dr );

8

가장 쉬운 방법은 현재 DtaTable을 만드는 것입니다

DataTable table = new DataTable
{
    Columns = {
        "Name", // typeof(string) is implied
        {"Marks", typeof(int)}
    },
    TableName = "MarksTable" //optional
};
table.Rows.Add("ravi", 500);

4

다른 답변 외에도.

DataTable의 구조를 제어하면 행을 추가하는 바로 가기가 있습니다.

// 이름이 dt dt.Rows.Add ( "Name", "Marks") 인 예제와 같이 정의 된 데이터 테이블이 있다고 가정하십시오.

DataRowCollection.Add () 메서드에는 개체의 매개 변수 배열을 취하는 오버로드가 있습니다. 이 방법을 사용하면 필요한만큼 많은 값을 전달할 수 있지만 열이 테이블에 정의 된 순서와 같아야합니다.

따라서 행 데이터를 추가하는 편리한 방법이지만 사용하기 위험 할 수 있습니다. 테이블 구조가 변경되면 코드가 실패합니다.


1

질문 1 : C #에서 DataTable을 어떻게 만듭니 까?

답변 1 :

DataTable dt = new DataTable(); // DataTable created

// Add columns in your DataTable
dt.Columns.Add("Name");
dt.Columns.Add("Marks");

참고 : 필요가 없습니다를 만든 후이.Clear()DataTable

질문 2 : 행을 추가하는 방법?

답변 2 : 한 행 추가 :

dt.Rows.Add("Ravi","500");

여러 행 추가 : ForEach루프 사용

DataTable dt2 = (DataTable)Session["CartData"]; // This DataTable contains multiple records
foreach (DataRow dr in dt2.Rows)
{
    dt.Rows.Add(dr["Name"], dr["Marks"]);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.