2009-06-25 42 views
127

如何在C#中創建一個DataTable?如何在C#中創建DataTable以及如何添加行?

我不喜歡這樣的:

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

如何查看數據表的結構?

現在我想添加拉維Name和爲Marks。我怎樣才能做到這一點?

+1

@可愛。只是一個評論 - 如果你使用的是.NET 3.5,你應該看看LINQ to SQL提供了什麼。如果你確實決定走下DataTable/DataSet路線,至少要着眼於創建強類型的DataTable。 – RichardOD 2009-06-25 07:50:27

回答

16

要添加行:

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

要看到結構:

Table.Columns 
+0

你忘了添加dt.AddRow(row);在代碼的最後。 – Canavar 2009-06-25 07:41:07

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

下面的代碼:

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"); 
+6

DataTable類沒有AddRow方法。你必須做dt.Rows.Add(_ravi);而不是 – Salamander2007 2009-06-25 07:43:04

+0

並沒有AddRow這樣的東西。它是DataTable.Rows.Add() – GenericTypeTea 2009-06-25 07:43:26

+0

如果您使用DataView和CurrentRows以外的其他過濾器,請不要忘記調用dt.AcceptChanges()。 – Salamander2007 2009-06-25 07:44:16

4

除了其他的答案。

如果你控制DataTable的結構有添加行的快捷方式:

//假設你有一個名爲DT dt.Rows.Add(「名」定義爲您的實例中的數據表, 「分數」);

DataRowCollection.Add()方法有一個重載對象的參數數組。此方法允許您根據需要傳遞儘可能多的值,但它們的順序必須與表中定義的列的順序相同。

因此,雖然這是一種添加行數據的方便方式,但使用起來可能會有風險。如果表結構更改您的代碼將失敗。

51

你也可以傳遞一個對象數組中爲好,像這樣:

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

你可以寫一個襯墊使用DataRow.Add(params object[] values)而不是四個l INES。

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

當你創建新的DataTable對象,似乎沒有需要ClearDataTable在第二天發言。您還可以使用DataTable.Columns.AddRange在語句中添加列。完整的代碼將是。

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

最簡單的方法是創建一個DtaTable截至目前

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

問題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:如何添加行(s)?

答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"]); 
} 
3

您可以在添加一行行

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); 
相關問題