基于 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
从 a获取String
,并忽略字母大小写,例如如果dr.GetDataTypeName(1)
返回"VARCHAR"
,则System.Data.SqlDbType
枚举值为System.Data.SqlDbType.VarChar
。
然后,您可以通过使用以下代码(来源MSDN )检查 SQL 列元数据来获取数据类型的大小(例如 VARCHAR(15) ):
... (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
提供大小信息。