What you appear to be trying to do is generate the name of a variable and then use that variable's content to add a column to a DB:
while (dtcounter < 108)
{
dcnumber = "dc" + dtcounter.ToString();
dt.Columns.Add(dcnumber);
dtcounter += 1;
}
That won't work: you cannot access variables via a string (without using Reflection, and that gets pretty hairy for a beginner like you).
So what you add to the dataTable as a column is a string "dc1", "dc2", etc., instead of the column you are trying to add.
If you must add columns like that (and I don't recommend it) create an array of DataColumns:
private DataColumn[] columns = new DataColumn[108];
And add a new DataColumn object instance to each:
private void Populate_Columns()
{
DataColumn dc = new DataColumn();
dc.ColumnName = "JobTranID";
dc.Caption = "JobTranID";
dc.DataType = System.Type.GetType("System.Int32");
columns[0] = dc;
DataColumn dc = new DataColumn();
dc.ColumnName = "JobCode";
dc.Caption = "JobCode";
dc.DataType= System.Type.GetType("System.String");
columns[1] = dc;
dc = new DataColumn();
dc.ColumnName = "ActivityCode";
...
Then you can access them via your index.
But to be honest, that's a pretty poor way to do it all. I'd use a configuration file and load the DataTable directly from that: CSV, XML, JSON - any of those would do.