2012-08-01 178 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

相關問題