我有一个数据库表,该表的列类型为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