获取数据表中列的数据类型

Get datatype of column in datatable

我正在尝试获取数据表的数据类型,代码是

 for (int j = 0; j < dt.Columns.Count; j++)
 {
       columntypes[j] = dt.Columns[j].GetType().Name;//dt.Rows[0][j].GetType().Name;
 } 

检查 dt.Rows[0][j].GetType().Name; 工作 fine.But 如果数据表为空,它会抛出错误,所以我尝试 dt.Columns[j].GetType().Name; 但它没有给出正确的解决方案

你可以这样试试:

if(dt!=null && dt.Rows.Count > 0)
{
    for (int j = 0; j < dt.Columns.Count; j++)
     {
           columntypes[j] = dt.Columns[j].DataType.Name.ToString();
     } 
}

即,您需要使用 DataType property

DataTable.Columns属性是一个DataColumnCollection,可以通过列名索引得到DataColumn,DataColumn的DataType是属性。 或者你可以这样做:

SqlCommand cmd = connection.CreateCommand(); 
cmd.CommandText = "SET FMTONLY ON; select column from table; SET FMTONLY OFF"; 
SqlDataReader reader = cmd.ExecuteReader();
SqlDbType type = (SqlDbType)(int)reader.GetSchemaTable().Rows[0] ["ProviderType"];

你也可以这样使用:

 int j=0;
 foreach (DataColumn dc in DT.Columns)
    {
       columntypes[j++] = dc.DataType.Name.ToString();  
    }