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

196

Comment créer un DataTable en C #?

J'ai aimé ça:

 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 ravi pour Nameet 500 pour Marks. Comment puis-je faire ceci?

Mignonne
la source
2
@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 descendre la route DataTable / DataSet, essayez au moins de créer des DataTables fortement typées.
RichardOD

Réponses:

256

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 la reformuler sous forme de schéma, vous pouvez l'exporter vers un fichier XML en procédant comme suit.

Pour exporter uniquement le schéma / la structure, procédez comme suit:

dt.WriteXMLSchema("dtSchemaOrStructure.xml");

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

dt.WriteXML("dtDataxml");
ce. __curious_geek
la source
8
La classe DataTable n'a pas de méthode AddRow. Vous devez faire dt.Rows.Add (_ravi); à la place
Salamander2007
1
Et il n'y a rien de tel que AddRow. C'est DataTable.Rows.Add ()
djdd87
N'oubliez pas d'appeler dt.AcceptChanges () dans le cas où vous utilisez DataView avec un filtre autre que CurrentRows.
Salamander2007
@DanD, @ Salamander2007: d'accord. Je l'ai changé maintenant. Essayez pour l'erreur, c'est arrivé bcoz J'utilise des jeux de données typés qui supportent cette chose.
ça. __curious_geek
@phoenix: Je voulais juste que le demandeur de questions soit heureux avec ma réponse.
ça. __curious_geek
65

Vous pouvez également transmettre un tableau d'objets, 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 même:

dt.Rows.Add(new object[] { "Ravi", 500 });
James McConnell
la source
11
Une autre alternative à ce sujet est de noter que la Addméthode indiquée ci-dessus a une surcharge avec un nombre variable de paramètres, vous pouvez donc la raccourcir dt.Rows.Add("Ravi", 500);et fonctionner de la même manière. Un gros avertissement avec l'une ou l'autre de ces approches: vous devez fournir ces paramètres dans le même ordre exact que les colonnes ont été définies, sinon vous obtiendrez une erreur. (Utilisez donc avec prudence!)
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();
shahnawaz
la source
29

Créer une table de données:

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

Ajouter une colonne au tableau:

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

Ajoutez une ligne à la méthode 1 de DataTable:

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

Ajoutez une ligne à la méthode DataTable 2:

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

Ajouter une ligne à la méthode 3 de DataTable (ajouter une ligne à partir d'une autre table selon la même structure):

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

Ajouter une ligne à la méthode DataTable 4 (ajouter une ligne à partir d'une autre table):

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

Ajouter une ligne à la méthode DataTable 5 (insérer une ligne dans un index):

MyTable.Rows.InsertAt(row, 8);
Hamed Naeemaei
la source
24

Pour ajouter une ligne:

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

Pour voir la structure:

Table.Columns
djdd87
la source
18

Vous pouvez écrire une ligne en utilisant DataRow.Add (valeurs d'objet params []) au lieu de quatre lignes.

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

Lorsque vous créez un nouvel DataTableobjet, il ne semble pas nécessaire de le faire Clear DataTabledans la prochaine déclaration. Vous pouvez également utiliser DataTable.Columns.AddRangepour ajouter des colonnes avec l'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");
Adil
la source
14

Vous pouvez ajouter une ligne sur 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);
Diego
la source
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();
Mohammed Shafi Adem
la source
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();
kavitha Reddy
la source
8

Pour cela, vous devez ajouter des flèches de données à votre table de données.

// 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 );
rahul
la source
8

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);
naveen
la source
4

En plus des autres réponses.

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

// Supposons que vous ayez une table de données définie comme dans votre exemple nommée dt dt.Rows.Add ("Name", "Marks");

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

Ainsi, bien qu'il s'agisse d'un moyen pratique d'ajouter des données de ligne, il peut être risqué de l'utiliser. Si la structure de la table change, votre code échouera.

Rune Grimstad
la source
1

Question 1: Comment 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");

Remarque: Il n'est pas nécessaire deClear()leDataTablecréer après.

Question 2: Comment ajouter des lignes?

Réponse 2: Ajoutez une ligne:

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

Ajouter plusieurs lignes: utiliser la ForEachboucle

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