有没有办法知道中的列的确切类型DataTable
?现在我正在这样做:
DataTable st = dataReader.GetSchemaTable();
foreach (DataColumn col in st.Columns)
{
var type = col.DataType;
}
现在,type.Name
我可以找到它是否是数字(int
或decimal
..),string
但是问题是我需要确切的类型,例如,如果在数据库中让我说代码中的列Rate
位于NUMBER(4,3)
此处,那么我只会得到类型为'十进制”,也没有有关Format的信息4,3
。
现在的要求是,我需要根据其类型来格式化值,例如。是否Rate=1.4
应显示为0001.400
(根据Format NUMBER(4,3)
)。因此在这里,由于我没有信息,因此无法进一步处理这些值。反正有相同的认识吗?
谢谢
您可以使用NumericPrecision
和NumericScale
:
using (var con = new SqlConnection(Properties.Settings.Default.RM2ConnectionString))
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
我已经用一个单列NumberColumn
类型的新表对其进行了测试numeric(4, 3)
:
Column: NumberColumn Type: decimal Precision: 4 Scale: 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句