我想从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}}?
答案 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);