private static DataTable GetDataTypes()
{
DataTable dt = new DataTable("DataTypes");
dt.Columns.Add(new DataColumn("TypeName", typeof (string)));
dt.Columns.Add(new DataColumn("ProviderDbType", typeof (int)));
dt.Columns.Add(new DataColumn("ColumnSize", typeof (long)));
dt.Columns.Add(new DataColumn("CreateFormat", typeof (string)));
dt.Columns.Add(new DataColumn("CreateParameters", typeof (string)));
dt.Columns.Add(new DataColumn("DataType", typeof (string)));
dt.Columns.Add(new DataColumn("IsAutoincrementable", typeof (bool)));
dt.Columns.Add(new DataColumn("IsBestMatch", typeof (bool)));
dt.Columns.Add(new DataColumn("IsCaseSensitive", typeof (bool)));
dt.Columns.Add(new DataColumn("IsFixedLength", typeof (bool)));
dt.Columns.Add(new DataColumn("IsFixedPrecisionScale", typeof (bool)));
dt.Columns.Add(new DataColumn("IsLong", typeof (bool)));
dt.Columns.Add(new DataColumn("IsNullable", typeof (bool)));
dt.Columns.Add(new DataColumn("IsSearchable", typeof (bool)));
dt.Columns.Add(new DataColumn("IsSearchableWithLike", typeof (bool)));
dt.Columns.Add(new DataColumn("IsUnsigned", typeof (bool)));
dt.Columns.Add(new DataColumn("MaximumScale", typeof (short)));
dt.Columns.Add(new DataColumn("MinimumScale", typeof (short)));
dt.Columns.Add(new DataColumn("IsConcurrencyType", typeof (bool)));
dt.Columns.Add(new DataColumn("IsLiteralSupported", typeof (bool)));
dt.Columns.Add(new DataColumn("LiteralPrefix", typeof (string)));
dt.Columns.Add(new DataColumn("LiteralSuffix", typeof (string)));
dt.Columns.Add(new DataColumn("NativeDataType", typeof (string)));
// have each one of the types contribute to the datatypes collection
MySqlBit.SetDSInfo(dt);
MySqlBinary.SetDSInfo(dt);
MySqlDateTime.SetDSInfo(dt);
MySqlTimeSpan.SetDSInfo(dt);
MySqlString.SetDSInfo(dt);
MySqlDouble.SetDSInfo(dt);
MySqlSingle.SetDSInfo(dt);
MySqlByte.SetDSInfo(dt);
MySqlInt16.SetDSInfo(dt);
MySqlInt32.SetDSInfo(dt);
MySqlInt64.SetDSInfo(dt);
MySqlDecimal.SetDSInfo(dt);
MySqlUByte.SetDSInfo(dt);
MySqlUInt16.SetDSInfo(dt);
MySqlUInt32.SetDSInfo(dt);
MySqlUInt64.SetDSInfo(dt);
return dt;
}