Есть ли встроенный класс, который можно использовать для анализа строки, содержащей тип данных столбца MySQL, и возврата эквивалентного объекта типа .NET?
Я хочу преобразовать некоторый код, который считывает информацию столбца из таблицытак что вместо того, чтобы извлекать строку данных и получать из нее информацию схемы (используя OdbcDataAdapter.FillSchema), вместо этого метод выдает команду, которая не выполняет сканирование таблицы (надеюсь, быстрее), чтобы получить ту же информацию.
Существующий код, подлежащий замене:
QueryStr.Append("SELECT * FROM ")
.Append("`" + tableName + "`")
.Append(" LIMIT 1 ");
DataTable dsTable = new DataTable();
using (OdbcConnection DbConn = new OdbcConnection(ConnectionStr))
{
OdbcDataAdapter cmd = new OdbcDataAdapter(QueryStr.ToString(), DbConn);
try
{
cmd.FillSchema(dsTable, SchemaType.Mapped);
QuerySuccessful = true;
}
Попытка нового кода:
StringBuilder QueryStr = new StringBuilder();
QueryStr.Append("DESCRIBE ")
.Append("`" + tableName + "`");
DataTable dsTable = new DataTable();
try
{
using (OdbcConnection DbConn = new OdbcConnection(connectionStr))
{
DbConn.Open();
OdbcCommand cmd = new OdbcCommand(QueryStr.ToString(), DbConn);
OdbcDataReader odrColumnReader = cmd.ExecuteReader();
while (odrColumnReader.Read())
{
string strColumnName = odrColumnReader.GetString(0);
string strColumnType = odrColumnReader.GetString(1);
// strColumnType is a string containing the type - e.g. char(6) or whatever
Type type = typeof (string); // TODO replace this bit with a conversion of strColumnType
columns.Add( new SQLcolumn(strColumnName, type, tableName));
}
DbConn.Close();
}
}
Проблема в том, что я возвращаю strColumnType в виде строки - я хочучтобы преобразовать его в тип .NET, чтобы он соответствовал тому, что я получил от FillSchema.
Я бы предпочел не кодировать мой собственный метод преобразования [используя эту информацию http://msdn.microsoft.com/en-us/library/cc668763.aspx], если он существует вFrameWork / ODBC / ADO.NET.