2012-08-01 120 views
3

在我的c#代码中,我尝试设置为SQL管理2008 R2数据库中float类型的值(它对应于在C#中的双精度,对吧?)。当我使用这种语法指定的强制转换无效 - SQL float to C#double

double x = (double)reader["column1"]; //reader is SqlDataReader object 

我得到错误“指定的转换无效”。

什么给?

+0

如果是'float',你尝试铸造'float'?! – banging 2012-08-01 19:47:56

+0

这是一个双 - 这是不寻常的,但SQL中的浮点数对应于c#中的double。 – Skitterm 2012-08-01 19:50:45

+0

显然不是! – banging 2012-08-01 19:51:12

回答

4

我会建议使用可通过SqlDataReader对象的辅助类...

double dbl = reader.GetDouble(reader.GetOrdinal("DoubleColumn")); 

如果有机会列可能为空,你应该交流计算该...

double dbl = (reader["DoubleColumn"] != DBNull.Value ? dr.GetDouble(dr.GetOrdinal("DoubleColumn")) : 0.0); 
+0

谢谢。这将检查null,如果是,则将值设置为0,这是我需要的。 – Skitterm 2012-08-01 20:00:15

2

使用Convert.ToDouble方法:

double x = Convert.ToDouble(reader["column1"]); 
6

你可以简单地GetDouble直接:

reader.GetDouble(reader.GetOrdinal("column1")) 
+0

也确保您在调用此方法之前调用IsDBNull检查空值。 – YetAnotherUser 2012-08-01 19:46:18

相关问题