private static void ParseColumnRow(DataRow row)
{
// first parse the character set name
string charset = row["CHARACTER_SET_NAME"].ToString();
int index = charset.IndexOf('_');
if (index != -1)
row["CHARACTER_SET_NAME"] = charset.Substring(0, index);
// now parse the data type
string dataType = row["DATA_TYPE"].ToString();
index = dataType.IndexOf('(');
if (index == -1)
return;
row["DATA_TYPE"] = dataType.Substring(0, index);
int stop = dataType.IndexOf(')', index);
string dataLen = dataType.Substring(index + 1, stop - (index + 1));
string lowerType = row["DATA_TYPE"].ToString().ToLower();
if (lowerType == "char" || lowerType == "varchar")
row["CHARACTER_MAXIMUM_LENGTH"] = dataLen;
else if (lowerType == "real" || lowerType == "decimal")
{
string[] lenparts = dataLen.Split(new char[] {','});
row["NUMERIC_PRECISION"] = lenparts[0];
if (lenparts.Length == 2)
row["NUMERIC_SCALE"] = lenparts[1];
}
}