Làm cách nào để tạo một DataTable trong C # và cách thêm hàng?


196

Làm cách nào để tạo một DataTable trong C #?

Tôi đã làm như thế này:

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

Làm cách nào để xem cấu trúc của DataTable?

Bây giờ tôi muốn thêm ravi cho Name500 cho Marks. Tôi có thể làm cái này như thế nào?


2
@Dễ thương. Chỉ cần một nhận xét - nếu bạn đang sử dụng .NET 3.5, bạn thực sự nên xem LINQ to SQL cung cấp những gì. Nếu bạn quyết định đi xuống tuyến đường DataTable / Dataset, ít nhất hãy nhìn vào để tạo DataTables được gõ mạnh.
RichardOD

Câu trả lời:


256

Đây là mã:

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);

Để xem cấu trúc, hay đúng hơn là tôi định nghĩa lại nó dưới dạng lược đồ, bạn có thể xuất nó thành tệp XML bằng cách thực hiện như sau.

Để chỉ xuất lược đồ / cấu trúc, hãy làm:

dt.WriteXMLSchema("dtSchemaOrStructure.xml");

Ngoài ra, bạn cũng có thể xuất dữ liệu của mình:

dt.WriteXML("dtDataxml");

8
Lớp DataTable không có phương thức AddRow. Bạn phải làm dt.Rows.Add (_ravi); thay vào đó
Salamander2007

1
Và không có thứ gọi là AddRow. Đó là DataTable.Rows.Add ()
djdd87

Đừng quên gọi dt.AcceptChanges () trong trường hợp bạn sử dụng DataView với bộ lọc khác với CurrentRows.
Salamander2007

@DanD, @ Salamander2007: đã đồng ý. Tôi đã thay đổi nó bây giờ. Sry cho lỗi, điều đó đã xảy ra bcoz Tôi sử dụng bộ dữ liệu đánh máy hỗ trợ điều này.
cái này __cquil_geek

@phoenix: Tôi chỉ muốn người hỏi câu vui vẻ liên quan đến câu trả lời của tôi.
cái này __cquil_geek

65

Bạn cũng có thể truyền vào một mảng đối tượng, như vậy:

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

Hoặc thậm chí:

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

11
Một cách khác để làm điều này là lưu ý Addphương thức hiển thị ở trên có sự quá tải với số lượng thông số thay đổi, vì vậy bạn có thể rút ngắn điều này thành dt.Rows.Add("Ravi", 500);và sẽ hoạt động tương tự. Một cảnh báo lớn với một trong hai cách tiếp cận sau: bạn phải cung cấp các tham số này theo đúng thứ tự như các cột được xác định, nếu không bạn sẽ gặp lỗi. (Vì vậy, hãy cẩn thận!)
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();

29

Tạo DataTable:

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

Thêm cột vào bảng:

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

Thêm hàng vào phương thức DataTable 1:

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

Thêm hàng vào phương thức DataTable 2:

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

Thêm hàng vào phương thức DataTable 3 (Thêm hàng từ một bảng khác theo cùng cấu trúc):

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

Thêm hàng vào phương thức DataTable 4 (Thêm hàng từ bảng khác):

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

Thêm hàng vào phương thức DataTable 5 (Chèn hàng tại một chỉ mục):

MyTable.Rows.InsertAt(row, 8);

24

Để thêm một hàng:

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

Để xem cấu trúc:

Table.Columns

18

Bạn có thể viết một lớp lót bằng cách sử dụng các giá trị DataRow.Add (params object []) thay vì bốn dòng.

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

Khi bạn tạo DataTableđối tượng mới , dường như không cần Clear DataTabletrong câu lệnh tiếp theo. Bạn cũng có thể sử dụng DataTable.Columns.AddRangeđể thêm các cột với câu lệnh on. Mã hoàn chỉnh sẽ được.

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

14

Bạn có thể thêm hàng trong một dòng

    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

Bạn phải thêm datarows vào datable của bạn cho việc này.

// 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

Cách dễ nhất là tạo DtaTable ngay bây giờ

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

4

Ngoài các câu trả lời khác.

Nếu bạn điều khiển cấu trúc của DataTable, có một lối tắt để thêm hàng:

// Giả sử bạn có một bảng dữ liệu được xác định như trong ví dụ của bạn có tên là dt dt.Rows.Add ("Tên", "Marks");

Phương thức DataRowCollection.Add () có một tình trạng quá tải cần một mảng param của các đối tượng. Phương pháp này cho phép bạn chuyển bao nhiêu giá trị nếu cần, nhưng chúng phải theo cùng thứ tự với các cột được xác định trong bảng.

Vì vậy, trong khi đây là một cách thuận tiện để thêm dữ liệu hàng, nó có thể có rủi ro khi sử dụng. Nếu cấu trúc bảng thay đổi, mã của bạn sẽ thất bại.


1

Câu hỏi 1: Làm thế nào để tạo một DataTable trong C #?

Trả lời 1:

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

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

Lưu ý: Không cần phải đểClear()cácDataTablesau khi tạo ra nó.

Câu 2: Làm thế nào để thêm (các) hàng?

Trả lời 2: Thêm một hàng:

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

Thêm nhiều hàng: ForEachvòng lặp sử dụng

DataTable dt2 = (DataTable)Session["CartData"]; // This DataTable contains multiple records
foreach (DataRow dr in dt2.Rows)
{
    dt.Rows.Add(dr["Name"], dr["Marks"]);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.