2009-06-25 25 views
127

¿Cómo se crea una DataTable en C#?¿Cómo crear una tabla de datos en C# y cómo agregar filas?

lo hice así:

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

¿Cómo puedo ver la estructura de DataTable?

Ahora quiero añadir Ravi para Name y para Marks. ¿Cómo puedo hacer esto?

+1

@Linda. Solo un comentario: si está utilizando .NET 3.5, realmente debería ver qué ofrece LINQ to SQL. Si decide ir por la ruta DataTable/DataSet, al menos busque las DataTables que están fuertemente tipadas. – RichardOD

Respuesta

16

Para añadir una fila:

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

Para ver la estructura:

Table.Columns 
+0

Olvidó agregar dt.AddRow (fila); al final de tu código – Canavar

8

hay que añadir datarows a su tabla de datos para esto.

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

Aquí está el código:

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

Para ver la estructura, o más bien me gustaría reformular como esquema, se puede exportar a un archivo XML mediante el procedimiento siguiente.

Para exportar sólo el esquema/estructura, hacer:

dt.WriteXMLSchema("dtSchemaOrStructure.xml"); 

Además, también puede exportar sus datos:

dt.WriteXML("dtDataxml"); 
+6

La clase DataTable no tiene el método AddRow. Tienes que hacer dt.Rows.Add (_ravi); en su lugar – Salamander2007

+0

Y no hay nada como AddRow. Es DataTable.Rows.Add() – GenericTypeTea

+0

No olvides llamar a dt.AcceptChanges() en caso de que uses DataView con filtros que no sean CurrentRows. – Salamander2007

4

Además de las otras respuestas.

Si el control de la estructura de la DataTable hay un acceso directo para las filas añadiendo:

// Suponga que tiene una tabla de datos se define como en el ejemplo mencionado, dt dt.Rows.Add ("Nombre", "Marcas");

El método DataRowCollection.Add() tiene una sobrecarga que toma una matriz de param de objetos. Este método le permite pasar tantos valores como sea necesario, pero deben estar en el mismo orden en que se definen las columnas en la tabla.

Por lo tanto, aunque esta es una forma conveniente de agregar datos de fila, puede ser riesgoso de usar. Si la estructura de la tabla cambia, su código fallará.

51

También se puede pasar en una matriz de objetos, así, de este modo:

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

O incluso:

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

Otra alternativa en esto es notar que el método 'Agregar' que se muestra arriba tiene una sobrecarga con número variable de params, por lo que podría acortar esto a 'dt.Rows.Add (" Ravi ", 500);' y funcionaría igual . Una gran advertencia con cualquiera de estos enfoques: debe proporcionar estos parámetros en el mismo orden exacto en que se definieron las columnas, de lo contrario obtendrá un error. (¡Así que use con precaució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

¿Por qué hay votos arriba en esta respuesta?no hay una explicación del concepto ni de lo que está sucediendo, y el código ni siquiera se compilará. – 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

Usted puede escribir un trazador de líneas usando DataRow.Add(params object[] values) en lugar de cuatro l ines.

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

A medida que crea nueva DataTable objeto, parece sin necesidad de ClearDataTable en muy próximo estado de cuenta. También puede usar DataTable.Columns.AddRange para agregar columnas con la declaración on. El código completo sería.

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

La forma más fácil es crear un DtaTable a partir de ahora

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

Pregunta 1: ¿Cómo crear un DataTable en C#?

Respuesta 1:

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

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

Nota: No hay necesidad de Clear() la DataTable después de crearlo.

Pregunta 2: ¿Cómo agregar una fila (s)?

Respuesta 2: Añadir una fila:

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

añadir varias filas: utilizar ForEach bucle

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

Puede añadir fila en una sola línea

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