在我的c#代码中,我尝试设置为SQL管理2008 R2数据库中float类型的值(它对应于在C#中的双精度,对吧?)。当我使用这种语法指定的强制转换无效 - SQL float to C#double
double x = (double)reader["column1"]; //reader is SqlDataReader object
我得到错误“指定的转换无效”。
什么给?
在我的c#代码中,我尝试设置为SQL管理2008 R2数据库中float类型的值(它对应于在C#中的双精度,对吧?)。当我使用这种语法指定的强制转换无效 - SQL float to C#double
double x = (double)reader["column1"]; //reader is SqlDataReader object
我得到错误“指定的转换无效”。
什么给?
我会建议使用可通过SqlDataReader对象的辅助类...
double dbl = reader.GetDouble(reader.GetOrdinal("DoubleColumn"));
如果有机会列可能为空,你应该交流计算该...
double dbl = (reader["DoubleColumn"] != DBNull.Value ? dr.GetDouble(dr.GetOrdinal("DoubleColumn")) : 0.0);
谢谢。这将检查null,如果是,则将值设置为0,这是我需要的。 – Skitterm 2012-08-01 20:00:15
使用Convert.ToDouble
方法:
double x = Convert.ToDouble(reader["column1"]);
你可以简单地GetDouble
直接:
reader.GetDouble(reader.GetOrdinal("column1"))
也确保您在调用此方法之前调用IsDBNull检查空值。 – YetAnotherUser 2012-08-01 19:46:18
如果是'float',你尝试铸造'float'?! – banging 2012-08-01 19:47:56
这是一个双 - 这是不寻常的,但SQL中的浮点数对应于c#中的double。 – Skitterm 2012-08-01 19:50:45
显然不是! – banging 2012-08-01 19:51:12