วิธีสร้าง DataTable ใน C # และวิธีเพิ่มแถว?


197

จะสร้าง DataTable ใน C # ได้อย่างไร

ฉันทำสิ่งนี้:

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

ฉันจะดูโครงสร้างของ DataTable ได้อย่างไร

ตอนนี้ผมต้องการที่จะเพิ่มราวีสำหรับNameและ500Marksสำหรับ ฉันจะทำสิ่งนี้ได้อย่างไร


2
@Cute เพียงแค่แสดงความคิดเห็น - ถ้าคุณใช้. NET 3.5 คุณควรเห็นว่า LINQ กับ SQL เสนออะไรบ้าง หากคุณตัดสินใจที่จะลงเส้นทาง DataTable / ชุดข้อมูลอย่างน้อยมองในการสร้าง DataTables ที่พิมพ์อย่างยิ่ง
RichardOD

คำตอบ:


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

อย่าลืมเรียก dt.AcceptChanges () ในกรณีที่คุณใช้ DataView พร้อมตัวกรองอื่นนอกเหนือจาก CurrentRows
Salamander2007

@DanD, @ Salamander2007: ตกลง ฉันเปลี่ยนมันทันที Sry สำหรับข้อผิดพลาดที่เกิดขึ้น 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 [] ค่า)แทนสี่บรรทัด

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

ในขณะที่คุณสร้างDataTableวัตถุใหม่ดูเหมือนว่าไม่จำเป็นต้องClear DataTableมีคำสั่งถัดไป คุณยังสามารถใช้DataTable.Columns.AddRangeเพื่อเพิ่มคอลัมน์ด้วยคำสั่ง รหัสที่สมบูรณ์จะเป็น

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

14

คุณสามารถเพิ่ม Row ในบรรทัดเดียว

    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

คุณต้องเพิ่ม datarows ลงใน DataTable ของคุณสำหรับสิ่งนี้

// 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 ("ชื่อ", "Marks");

กระบวนการ DataRowCollection.Add () วิธีการมีการโอเวอร์โหลดที่ใช้อาร์เรย์ของวัตถุ วิธีนี้ช่วยให้คุณสามารถส่งค่าได้มากเท่าที่ต้องการ แต่จะต้องอยู่ในลำดับเดียวกับที่กำหนดไว้ในตาราง

ดังนั้นในขณะที่นี่เป็นวิธีที่สะดวกในการเพิ่มข้อมูลแถว แต่ก็มีความเสี่ยงที่จะใช้ หากโครงสร้างตารางเปลี่ยนรหัสของคุณจะล้มเหลว


1

คำถามที่ 1: สร้าง DataTable ใน C # ได้อย่างไร

ตอบ 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.