C# DataRow
DataTable
Add
DataColumn
Then:The DataTable is populated with five rows, each a separate dog with four data cells.
C# program that uses DataRow
static DataTable GetTable()
{
// Here we create a DataTable with four columns.
DataTable table = new DataTable();
table.Columns.Add("Weight", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Breed", typeof(string));
table.Columns.Add("Date", typeof(DateTime));
// Here we add five DataRows.
table.Rows.Add(57, "Koko", "Shar Pei", DateTime.Now);
table.Rows.Add(130, "Fido", "Bullmastiff", DateTime.Now);
table.Rows.Add(92, "Alex", "Anatolian Shepherd Dog", DateTime.Now);
table.Rows.Add(25, "Charles", "Cavalier King Charles Spaniel", DateTime.Now);
table.Rows.Add(7, "Candy", "Yorkshire Terrier", DateTime.Now);
return table;
}
Add method signature. The Rows collection, which is a
DataRowCollection instance, declares an Add method that receives an
object array. This array must have an equal number of elements to the
DataColumn fields.Object array
Note:The object array here has an array Length equal to the number of columns. Object arrays can store any element type.
Array Length PropertyObject ArrayC# program that uses object array with DataTable
using System;
using System.Data;
class Program
{
static void Main()
{
DataTable table = GetTable();
//
// We can instantiate a new object array and add it as a row.
//
object[] array = new object[4];
array[0] = 7;
array[1] = "Candy";
array[2] = "Yorkshire Terrier";
array[3] = DateTime.Now;
table.Rows.Add(array);
}
}
Get DataRow
Sometimes you will need to obtain a reference to a DataRow in your DataTable. This reference can be used for calling the Delete method or other methods, or for passing it as a parameter to methods.
Here:We use the Rows indexer,
Rows[0], to get the first row. We get the last row in the Rows
collection by subtracting 1 from the Count.
C# program that gets DataRows
using System;
using System.Data;
class Program
{
static void Main()
{
//
// Get the first row from the DataTable.
//
DataTable table = GetTable();
DataRow row = table.Rows[0];
Console.WriteLine(row["Breed"]);
//
// Get the last row in the DataTable.
//
DataRow last = table.Rows[table.Rows.Count - 1];
Console.WriteLine(last["Breed"]);
}
}
Output
Shar Pei
Yorkshire Terrier
Loop
Note:You can avoid casting with the Field generic method. Please see the section further down for more info.
C# program that uses foreach on DataRow
using System;
using System.Data;
class Program
{
static void Main()
{
//
// Get the first row and loop over its ItemArray.
//
DataTable table = GetTable();
DataRow row = table.Rows[0];
foreach (object item in row.ItemArray)
{
if (item is int)
{
Console.WriteLine("Int: {0}", item);
}
else if (item is string)
{
Console.WriteLine("String: {0}", item);
}
else if (item is DateTime)
{
Console.WriteLine("DateTime: {0}", item);
}
}
}
}
Output
Int: 57
String: Koko
String: Shar Pei
DateTime: 4/6/2014 4:10:31 PM
Tip:You can find more detailed information on foreach-loops on DataRows on this site.
DataTable Foreach LoopIsRemove
Next:We remove the first row using Remove. If you try to access the DataRow, the runtime will throw an exception.
C# program that removes DataRow
using System;
using System.Data;
class Program
{
static void Main()
{
//
// Get the first row for the DataTable
//
DataTable table = GetTable();
//
// Get the row and remove it.
//
DataRow row = table.Rows[0];
table.Rows.Remove(row);
//
// You can no longer access row[0].
//
}
}
Unhandled Exception:
System.Data.RowNotInTableException:
This row has been removed from a table and does not have any data.
BeginEdit() will allow creation of new data in this row.
Please remember
that the exceptions are there to help you debug your program quicker.
Don't let your blood pressure rise too much when they appear. They are
actually making your life easier.Delete
The Delete method will cleanly delete that DataRow. When you try to access that row's index, you will get the next row. In other words, the DataRow erases the row and you cannot access it all after you call Delete.C# program that deletes DataRow
using System;
using System.Data;
class Program
{
static void Main()
{
//
// Get the first row for the DataTable
//
DataTable table = GetTable();
DataRow row = table.Rows[0];
//
// Delete the first row. This means the second row is the first row.
//
row.Delete();
//
// Display the new first row.
//
row = table.Rows[0];
Console.WriteLine(row["Name"]);
}
}
Output
Fido
Field
So:You can, for example, access int, string, and DateTime fields using the Field method.
IntStringsDateTimeThe type parameter,
in sharp brackets, accepts the field type, while the function parameter
accepts the field index. In complex programs, the Field extension can
make life easier.DataRow Field
No hay comentarios:
Publicar un comentario