基于 Madhukar Krishna 的回答,如果您有 SQLDataReader 或 MySQLDataReader 对象,您可以使用以下代码(适用于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);
用于从String 获取System.Data.SqlDbType,并忽略字母大小写,例如如果dr.GetDataTypeName(1) 返回"VARCHAR",则System.Data.SqlDbType 枚举值为System.Data.SqlDbType.VarChar。
然后,您可以通过使用以下代码检查 SQL 列元数据来获取数据类型的大小(例如 VARCHAR(15))(来源 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 属性给出了大小信息。