Build a DataTable in Code
Posted
Sat, Feb 27 2010 16:49
by
Deborah Kurata
There may be times you need to build a DataTable using code instead of retrieving the data from a database.
This post provides the code for building a DataTable using VB or C# code.
In C#:
DataTable dt = new DataTable("Customers");
DataColumn dc;
dc = new DataColumn();
dc.DataType = typeof(int);
dc.ColumnName = "CustomerID";
dt.Columns.Add(dc);
dt.Columns.Add(new DataColumn("LastName"));
dt.Columns.Add(new DataColumn("FirstName"));
// Concatenation of first and last names
dt.Columns.Add(new DataColumn("FullName"));
dt.Columns.Add(new DataColumn("Address"));
dt.Columns.Add(new DataColumn("City"));
dt.Columns.Add(new DataColumn("State"));
dt.Columns.Add(new DataColumn("Zip"));
dt.Columns.Add(new DataColumn("Phone"));
dc = new DataColumn();
dc.DataType = typeof(DateTime);
dc.ColumnName = "LastPurchaseDate";
dt.Columns.Add(dc);
dc = new DataColumn();
dc.DataType = typeof(int);
dc.ColumnName = "CustomerType";
dt.Columns.Add(dc);
// Populate the table
dt.Rows.Add(2, "Baggins", "Bilbo", "Baggins, Bilbo", "Bagshot Row #1", "Hobbiton", "SH", "00001", "555-2222", DateTime.Parse("9/24/2008"), 1);
dt.Rows.Add(1, "Baggins", "Frodo", "Baggins, Frodo", "Bagshot Row #2", "Hobbiton", "SH", "00001", "555-1111", DateTime.Parse("9/14/2008"), 1);
dt.Rows.Add(6, "Bolger", "Fatty", "Bolger, Fatty", "ProudFeet Creek", "Hobbiton", "SH", "00001", "555-1111", DateTime.Parse("9/14/2008"), 1); dt.Rows.Add(4, "Elessar", "Aragorn", "Elessar, Aragorn", "Citadel", "Minas Tirith", "Gondor", "00000", "555-0000", DateTime.Parse("9/14/2008"), 4);
dt.Rows.Add(5, "Evenstar", "Arwin", "Evenstar, Arwin", "Citadel", "Minas Tirith", "Gondor", "00000", "555-0001", DateTime.Parse("9/23/2008"), 4);
dt.Rows.Add(3, "Greyhame", "Gandalf", "Grayhame, Gandalf", DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value, 3);
In VB:
Dim dt As New DataTable("Customers")
Dim dc As DataColumn
dc = New DataColumn
With dc
.DataType = GetType(Integer)
.ColumnName = "CustomerID"
End With
dt.Columns.Add(dc)
dt.Columns.Add(New DataColumn("LastName"))
dt.Columns.Add(New DataColumn("FirstName"))
' Concatenation of first and last names
dt.Columns.Add(New DataColumn("FullName"))
dt.Columns.Add(New DataColumn("Address"))
dt.Columns.Add(New DataColumn("City"))
dt.Columns.Add(New DataColumn("State"))
dt.Columns.Add(New DataColumn("Zip"))
dt.Columns.Add(New DataColumn("Phone"))
dc = New DataColumn
With dc
.DataType = GetType(Date)
.ColumnName = "LastPurchaseDate"
End With
dt.Columns.Add(dc)
dc = New DataColumn
With dc
.DataType = GetType(Integer)
.ColumnName = "CustomerType"
End With
dt.Columns.Add(dc)
' Populate the table
dt.Rows.Add(2, "Baggins", "Bilbo", "Baggins, Bilbo", "Bagshot Row #1", "Hobbiton", "SH", "00001", "555-2222", #9/24/2008#, 1)
dt.Rows.Add(1, "Baggins", "Frodo", "Baggins, Frodo", "Bagshot Row #2", "Hobbiton", "SH", "00001", "555-1111", #9/23/2008#, 1)
dt.Rows.Add(6, "Bolger", "Fatty", "Bolger, Fatty", "ProudFeet Creek", "Hobbiton", "SH", "00001", "555-1111", #9/14/2008#, 1)
dt.Rows.Add(4, "Elessar", "Aragorn", "Elessar, Aragorn", "Citadel", "Minas Tirith", "Gondor", "00000", "555-0000", #9/23/2008#, 4)
dt.Rows.Add(5, "Evenstar", "Arwin", "Evenstar, Arwin", "Citadel", "Minas Tirith", "Gondor", "00000", "555-0001", #9/23/2008#, 4)
dt.Rows.Add(3, "Greyhame", "Gandalf", "Grayhame, Gandalf", DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value, 3)
The code starts by creating a new DataTable. This one is called "Customer". The next set of code defines the columns. This example demonstrates how to build integer, string, and date columns.
Finally, the last portion of the code populates several rows in the DataTable.
The result looks like this:
Use this technique any time you need to build a DataTable in code.
Enjoy!
EDITED 4/17/10: Corrected an error in the C# code data.