Въз основа на отговора на Madhukar Krishna, ако имате SQLDataReader
или MySQLDataReader
обект, можете да получите метаданните за типа SQL за дадена колона (в кода получаваме метаданните на колона с индекс 1), като използвате следния код (пример за работа за MySQLDataReader
обект):
...
MySqlDataReader dr = ...
Console.WriteLine("dr.GetFieldType(1) = {0}, dr.GetName(1) = {1}, dr.GetValue(1) = {2}, dr.GetDataTypeName(1) = {3}",
dr.GetFieldType(1), dr.GetName(1), dr.GetValue(1), dr.GetDataTypeName(1));
bool b = Enum.TryParse(dr.GetDataTypeName(1), true, out System.Data.SqlDbType mySqlDbTypeEnum);
Console.WriteLine("mySqlDbTypeEnum = {0}, b = {1}", mySqlDbTypeEnum, b);
Линията:
bool b = Enum.TryParse(dr.GetDataTypeName(1), true, out System.Data.SqlDbType mySqlDbTypeEnum);
се използва за получаване на System.Data.SqlDbType
от String
и пренебрегване на главните букви, напр. ако dr.GetDataTypeName(1)
върне "VARCHAR"
, тогава стойността на System.Data.SqlDbType
enum е System.Data.SqlDbType.VarChar
.
След това можете да получите размера на типа данни (например VARCHAR(15)), като проверите метаданните на SQL колоните със следния код (източник MSDN):
... (continuation)
DataTable schemaTable;
// Retrieve column schema into a DataTable.
schemaTable = dr.GetSchemaTable();
// For each field in the table...
foreach (DataRow myField in schemaTable.Rows)
{
// For each property of the field...
foreach (DataColumn myProperty in schemaTable.Columns)
{
// Display the field name and value.
Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
}
Console.WriteLine();
// Pause.
//Console.ReadLine();
}
Свойството ColumnSize
дава информация за размера.
person
Nuno Leite
schedule
07.04.2018