有没有办法知道列中列的确切类型DataTable
?现在我正在这样做:
DataTable st = dataReader.GetSchemaTable();
foreach (DataColumn col in st.Columns)
{
var type = col.DataType;
}
现在与type.Name
我能够找到它是否是一个数字(int
or decimal
..) or string
但问题是我需要确切的类型,例如如果在数据库中假设列Rate
is NUMBER(4,3)
然后在我的代码中我只得到“十进制”类型,没有有关格式的信息4,3
.
现在的要求是我需要根据值的类型来格式化值,例如。如果Rate=1.4
它应该显示为0001.400
(根据格式NUMBER(4,3)
)。因此,由于我没有信息,我无法进一步处理这些值。无论如何都知道相同的吗?
Thanks
您可以使用NumericPrecision
and NumericScale
:
using (var con = new SqlConnection(Properties.Settings.Default.MyConnectionString))
using (var cmd = new SqlCommand("SELECT * FROM dbo.Test", con))
{
con.Open();
using (var reader = cmd.ExecuteReader())
using (var schemaTable = reader.GetSchemaTable())
{
foreach (DataRow row in schemaTable.Rows)
{
string column = row.Field<string>("ColumnName");
string type = row.Field<string>("DataTypeName");
short precision = row.Field<short>("NumericPrecision");
short scale = row.Field<short>("NumericScale");
Console.WriteLine("Column: {0} Type: {1} Precision: {2} Scale: {3}", column, type, precision, scale);
}
}
}
更多信息:GetSchemaTable http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getschematable%28v=vs.110%29.aspx
我已经用带有单列的新表对其进行了测试NumberColumn
类型的numeric(4, 3)
:
Column: NumberColumn Type: decimal Precision: 4 Scale: 3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)