2009-06-25 9 views
127

Wie kann eine DataTable in C# erstellt werden?Wie erstellt man eine DataTable in C# und wie fügt man Zeilen hinzu?

ich so tat:

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

Wie sehe ich die Struktur von Datatable?

Jetzt möchte ich Ravi für Name und für Marks hinzuzufügen. Wie kann ich das machen?

+1

@Niedlich. Nur ein Kommentar - wenn Sie .NET 3.5 verwenden, sollten Sie wirklich sehen, was LINQ to SQL bietet. Wenn Sie sich dazu entschließen, die DataTable/DataSet-Route herunterzufahren, suchen Sie zumindest nach dem Erstellen von DataTables, die stark typisiert sind. – RichardOD

Antwort

16

eine Zeile hinzu:

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

die Struktur zu sehen:

Table.Columns 
+0

Sie haben vergessen, dt.AddRow (row) hinzuzufügen; am Ende deines Codes. – Canavar

8

Sie haben datarows auf Ihre Datentabelle für diese hinzuzufügen.

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

Hier ist der Code:

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

die Struktur zu sehen, oder besser gesagt würde ich es als Schema neu formulieren, können Sie es in eine XML-Datei exportieren, indem Sie folgendermaßen vorgehen.

nur das Schema/Struktur zu exportieren, zu tun:

dt.WriteXMLSchema("dtSchemaOrStructure.xml"); 

Zusätzlich können Sie Ihre Daten auch exportieren:

dt.WriteXML("dtDataxml"); 
+6

Die DataTable-Klasse verfügt nicht über die AddRow-Methode. Sie müssen dt.Rows.Add (_ravi); stattdessen – Salamander2007

+0

Und so etwas wie AddRow gibt es nicht. Es ist DataTable.Rows.Add() – GenericTypeTea

+0

Vergessen Sie nicht, dt.AcceptChanges() aufzurufen, falls Sie DataView mit einem anderen Filter als CurrentRows verwenden. – Salamander2007

4

Zusätzlich zu den anderen Antworten.

Wenn Sie steuern die Struktur der Datentabelle eine Abkürzung für das Hinzufügen von Zeilen:

// Angenommen, Sie eine Datentabelle, wie in Ihrem Beispiel dt dt.Rows.Add Namen definiert haben („Name“, "Marken");

Die DataRowCollection.Add() -Methode hat eine Überladung, die ein param-Array von Objekten annimmt. Mit dieser Methode können Sie so viele Werte wie erforderlich übergeben, sie müssen jedoch in derselben Reihenfolge wie die Spalten in der Tabelle definiert sein.

Während dies eine bequeme Methode zum Hinzufügen von Zeilendaten ist, kann es jedoch riskant sein, sie zu verwenden. Wenn sich die Tabellenstruktur ändert, schlägt Ihr Code fehl.

51

Sie können sich auch in einem Objekt-Array übergeben, etwa so:

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

Oder auch:

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

Eine andere Alternative dazu ist, zu beachten, dass die oben gezeigte 'Add'-Methode eine Überladung mit einer variablen Anzahl von Parametern aufweist, so dass Sie diese auf' dt.Rows.Add ("Ravi", 500) verkürzen könnten; und würde genauso funktionieren . Eine große Warnung mit einem dieser Ansätze: Sie müssen diese Parameter genau in der Reihenfolge angeben, in der die Spalten definiert wurden, sonst erhalten Sie einen Fehler. (Also mit Vorsicht!) – 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

Warum gibt es Upvotes zu dieser Antwort?keine Erklärung des Konzepts oder was passiert, und der Code wird nicht einmal kompilieren. – 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

können Sie Einzeiler schreiben mit DataRow.Add(params object[] values) anstelle von vier l ines.

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

Wie Sie neu erstellen DataTable Objekt, so scheint es kein Notwendigkeit ClearDataTable in sehr nächste Anweisung. Sie können auch DataTable.Columns.AddRange verwenden, um Spalten mit einer Anweisung hinzuzufügen. Kompletter Code wäre.

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

Der einfachste Weg ist es, eine DtaTable ab sofort

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

Frage 1 zu erstellen: Wie erstelle eine Datatable in C#?

Antwort 1:

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

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

Hinweis: Es gibt keine Notwendigkeit, Clear() die DataTable nach der Erstellung.

Frage 2: Wie Zeile (n) hinzufügen?

Antwort 2: In einer Zeile:

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

mehrere Zeilen hinzufügen: Verwenden Sie ForEach Schleife

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

Sie Reihe in einer einzigen Zeile hinzufügen können

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