2009-06-25 8 views
127

Comment créer un DataTable en C#?Comment créer un DataTable en C# et comment ajouter des lignes?

Je l'ai fait comme ceci:

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

Comment puis-je voir la structure de DataTable?

Maintenant, je veux ajouter pour Name ravi et pour Marks. Comment puis-je faire ceci?

+1

@Mignonne. Juste un commentaire - si vous utilisez .NET 3.5, vous devriez vraiment voir ce que LINQ to SQL offre. Si vous décidez de parcourir la route DataTable/DataSet, regardez au moins la création de DataTables fortement typés. – RichardOD

Répondre

16

Pour ajouter une ligne:

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

Pour voir la structure:

Table.Columns 
+0

Vous avez oublié d'ajouter dt.AddRow (row); à la fin de votre code. – Canavar

8

Vous devez ajouter à votre datarows datatable pour cela.

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

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

Pour voir la structure, ou plutôt je reformule aurait comme schéma, vous pouvez l'exporter vers un fichier XML en procédant comme suit.

Pour exporter uniquement le schéma/la structure, faire:

dt.WriteXMLSchema("dtSchemaOrStructure.xml"); 

De plus, vous pouvez également exporter vos données:

dt.WriteXML("dtDataxml"); 
+6

La classe DataTable n'a pas de méthode AddRow. Vous devez faire dt.Rows.Add (_ravi); à la place – Salamander2007

+0

Et il n'y a rien de tel que AddRow. C'est DataTable.Rows.Add() – GenericTypeTea

+0

N'oubliez pas d'appeler dt.AcceptChanges() si vous utilisez DataView avec un filtre autre que CurrentRows. – Salamander2007

4

Outre les autres réponses.

Si vous contrôlez la structure du DataTable il y a un raccourci pour ajouter des lignes:

// Supposons que vous avez une table de données définies comme dans votre exemple le nom dt dt.Rows.Add (« Nom », "Des notes");

La méthode DataRowCollection.Add() a une surcharge qui prend un tableau param d'objets. Cette méthode vous permet de transmettre autant de valeurs que nécessaire, mais elles doivent être dans le même ordre que les colonnes définies dans la table.

Alors que c'est un moyen pratique d'ajouter des données de ligne, il peut être risqué à utiliser. Si la structure de la table change votre code échouera.

51

Vous pouvez également passer dans un tableau d'objets aussi bien, comme ceci:

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

Ou encore:

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

Une autre alternative est de noter que la méthode 'Add' montrée ci-dessus a une surcharge avec un nombre variable de paramètres, donc vous pouvez raccourcir cela à' dt.Rows.Add ("Ravi", 500); 'et fonctionnerait de la même manière . Un gros avertissement avec l'une ou l'autre de ces approches: vous devez fournir ces paramètres exactement dans le même ordre que les colonnes ont été définies, sinon vous obtiendrez une erreur. (Donc, à utiliser avec prudence!) – 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

Pourquoi y-a-t-il des upvotes sur cette réponse?Aucune explication du concept ou de ce qui se passe, et le code ne compilera même pas. – 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

Vous pouvez écrire une doublure en utilisant DataRow.Add(params object[] values) au lieu de quatre l ines.

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

Lorsque vous créez nouvel objet DataTable, il semble pas besoin de ClearDataTable dans l'énoncé suivant. Vous pouvez également utiliser DataTable.Columns.AddRange pour ajouter des colonnes avec une instruction on. Le code complet serait.

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

La façon la plus simple est de créer un DtaTable dès maintenant

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

Question 1: Comment ne créer un DataTable en C#?

Réponse 1:

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

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

Note: Il n'y a pas besoin de Clear() le DataTable après l'avoir créé.

Question 2: Comment ajouter une rangée?

Réponse 2: Ajouter une ligne:

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

Ajouter plusieurs lignes: utiliser ForEach boucle

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

Vous pouvez ajouter une ligne dans une seule ligne

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