/// <summary>Create a table that matches the specified table.</summary>
        /// <param name="table">The table definition to write to the database.</param>
        private void CreateTable(DataTable table)
        {
            List <string> colTypes = new List <string>();

            foreach (DataColumn column in table.Columns)
            {
                columnNamesInDb.Add(column.ColumnName);
                bool allowLongStrings = table.TableName.StartsWith("_");
                colTypes.Add(connection.GetDBDataTypeName(column.DataType, allowLongStrings));
            }
            connection.CreateTable(Name, columnNamesInDb.ToList(), colTypes);

            if (table.Columns.Contains("ID") && table.TableName.StartsWith("_"))
            {
                connection.CreateIndex(table.TableName, new List <string>()
                {
                    "ID"
                }, true);
            }
            else if (table.Columns.Contains("CheckpointID") && table.Columns.Contains("SimulationID"))
            {
                connection.CreateIndex(table.TableName, new List <string>()
                {
                    "CheckpointID", "SimulationID"
                }, false);
            }

            TableExistsInDb = true;
        }