我有一个数据库表,该表的列类型为money,允许为空。使用名为SqlDataReader的阅读器,我可以

decimal d = reader.GetDecimal(1);


哪个有效,除非我们当然读取的是null。如果我改用SqlDecimal -并且我认为SqlTypes的重点是处理null -那么无论值是否为null,我都会得到一个无效的转换。

SqlDecimal s = reader.GetSqlDecimal(1);  // throws an invalid cast exception


我究竟做错了什么?我真的需要编写条件语句来将值从数据库扩展到SqlDecimal变量吗?

最佳答案

我敢打赌,您的值适合小数,而不适合SqlDecimal。


  SqlDecimal具有与其相应的.NET Framework Decimal数据类型不同的基础数据结构。


http://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqldecimal.aspx

08-06 17:49