2009-06-25 149 views
127

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

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

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

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

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

+1

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

Trả lời

16

Để 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 
+0

Bạn quên thêm dt.AddRow (hàng); ở cuối mã của bạn. – Canavar

8

Bạn phải thêm datarows để DataTable 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); 
183

Dưới đây là các 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 muốn nói lại nó như lược đồ, bạn có thể xuất nó vào một file XML bằng cách làm như sau.

Để chỉ xuất schema/cấu trúc, làm:

dt.WriteXMLSchema("dtSchemaOrStructure.xml"); 

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

dt.WriteXML("dtDataxml"); 
+6

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

+0

Và không có thứ gì như AddRow. Đó là DataTable.Rows.Add() – GenericTypeTea

+0

Đừ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

4

Bên cạnh những câu trả lời khác.

Nếu bạn kiểm soát cấu trúc của DataTable có một phím tắt cho các hàng nói thêm:

// Giả sử bạn có một bảng dữ liệu được định nghĩa như trong ví dụ của bạn tên dt dt.Rows.Add ("Name", "Điểm");

Phương thức DataRowCollection.Add() có quá tải phải mất một mảng tham số của đối tượng. Phương thức này cho phép bạn chuyển nhiều giá trị nếu cần, nhưng chúng phải theo thứ tự giống như các cột được định nghĩa trong bảng.

Vì vậy, mặc dù đây là cách thuận tiện để thêm dữ liệu hàng, nhưng điều này có thể gây 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.

51

Bạn cũng có thể vượt qua trong một mảng đối tượng là tốt, 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 }); 
+9

Một giải pháp thay thế khác là lưu ý phương thức 'Add' được hiển thị ở trên có quá tải với số tham số biến, 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 các cách tiếp cận sau: bạn phải cung cấp các tham số này theo thứ tự chính xác như các cột đã được xác định, nếu không bạn sẽ gặp lỗi. (Vì vậy, sử dụng cẩn thận!) – Funka

24
// 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(); 
+5

Tại sao có upvotes về câu trả lời này?không có giải thích về khái niệm hoặc những gì đang xảy ra, và mã sẽ không biên dịch. – BrDaHa

9
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(); 
7
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(); 
10

Bạn có thể viết lót sử dụng DataRow.Add(params object[] values) thay vì bốn l ines.

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

Khi bạn tạo đối tượng mới DataTable, dường như không cần phải ClearDataTable trong tuyên bố rất tới. Bạn cũng có thể sử dụng DataTable.Columns.AddRange để thêm cột có tuyên bố. Toàn bộ mã sẽ là.

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

Cách đơn giản nhất là tạo ra một DtaTable như của bây giờ

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

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 để Clear() các DataTable sau khi tạo ra nó.

Câu hỏi 2: Cách thêm hàng?

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

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

Thêm nhiều hàng: sử dụng ForEach loop

DataTable dt2 = (DataTable)Session["CartData"]; // This DataTable contains multiple records 
foreach (DataRow dr in dt2.Rows) 
{ 
    dt.Rows.Add(dr["Name"], dr["Marks"]); 
} 
3

Bạn có thể thêm Row trong một dòng đơn

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); 
Các vấn đề liên quan