从SQL Server数据库中读取小数

时间:2016-02-03 18:51:45

标签: c# .net sql-server

我想从SQL Server数据库中读取许多类型decimal(8,2),并将它们存储在对象MyRow中。

public class MyRow
{
    public decimal data1 { get; set; }
}

...

List<MyRow> values = new List<MyRow>();
SqlDataReader reader = command.ExecuteReader();

while (reader.read())
{
    values.Add( new MyRow() { 
        data1 = decimal.Parse(((double)reader["data1"]).ToString("R")) 
    }
}

这个解决方案看起来很不理想,似乎我做了太多的转换,看起来很简单。由于data的值在数据库中已经是decimal(8,2),因此如果没有从decimal到{{{}的转换,有没有办法将数据读入object类型1}}?

4 个答案:

答案 0 :(得分:2)

您可以使用GetDecimal的{​​{1}}方法。 SqlDataReader对象会影响SqlDataReader接口。因此,它实现了许多方法。在这些方法中,有IDataRecord

有关此问题的详细信息,请查看here

话虽如此,您的代码可以写成如下:

GetDecimal

答案 1 :(得分:0)

您是否检查过SqlDataReader.GetDecimal方法?

答案 2 :(得分:0)

使用SqlDataReader&#39; GetDecimal方法。

var values = new List<MyRow>();
while (reader.Read())
{
   var r = new MyRow { data1 = reader.GetDecimal(reader.GetOrdinal("data1"))};
   values.Add(r);
}

答案 3 :(得分:0)

使用精度和规模

此处是代码段

// Assume, com is SqlCommand and ExchangeRate is Parameter

SqlParameter parameter = new SqlParameter("@ExChangedRate", SqlDbType.Decimal);
parameter.Direction = ParameterDirection.Output;
parameter.Precision = 16;
parameter.Scale = 2;
com.Parameters.Add(parameter);