获取数据表中列的数据类型
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();
}
我正在尝试获取数据表的数据类型,代码是
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();
}